47 lines
1.0 KiB
Bash
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
|
|
}
|