Skripte/Utility/Lock.sh

47 lines
1.0 KiB
Bash

#!/bin/bash
LOCK_DIR="/run/lock" # Standard für systemweite Locks
if [[ ! -w "$LOCK_DIR" ]]; then
LOCK_DIR="/tmp" # Fallback für benutzerspezifische Locks
fi
# Funktion zur Erstellung des Lock-Dateinamens
get_lock_file() {
local suffix="$1"
if [[ -n "$suffix" ]]; then
echo "$LOCK_DIR/$(basename "$0")_$suffix.lock"
else
echo "$LOCK_DIR/$(basename "$0").lock"
fi
}
create_lock() {
local suffix="$1"
local lock_file
lock_file=$(get_lock_file "$suffix")
if [[ -e "$lock_file" ]]; then
log "Ein anderer Prozess läuft bereits. Lock-File gefunden: $lock_file"
exit 1
fi
touch "$lock_file"
log "Lock-File erstellt: $lock_file"
}
remove_lock() {
local suffix="$1"
local lock_file
lock_file=$(get_lock_file "$suffix")
if [[ -e "$lock_file" ]]; then
rm -f "$lock_file"
log "Lock-File entfernt: $lock_file"
fi
}
trap_remove_lock() {
log "Signal empfangen. Lock-File wird entfernt."
remove_lock
exit 1
}