Feat: Fügt Lock-File funktionalität hinzu.
This commit is contained in:
parent
8cb964b666
commit
b3dedd446f
@ -4,8 +4,15 @@
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/../Utility/WakeOnLan.sh"
|
||||
source "$SCRIPT_DIR/../Utility/IsMounted.sh"
|
||||
source "$SCRIPT_DIR/../Utility/Lock.sh"
|
||||
source "$SCRIPT_DIR/../Utility/Log.sh"
|
||||
|
||||
# === TRAP EINRICHTEN ===
|
||||
trap trap_remove_lock SIGINT SIGTERM
|
||||
|
||||
# === LOCK-FILE ERSTELLEN ===
|
||||
create_lock
|
||||
|
||||
# === KONSTANTEN ===
|
||||
MAX_RESTARTS=2 # Maximale Anzahl an Neustarts
|
||||
RESTART_COUNT_FILE="/tmp/hidrive_restart_count" # Datei zur Speicherung des Neustart-Zählers
|
||||
@ -31,18 +38,21 @@ if [[ "$*" == *"-h"* ]]; then
|
||||
echo
|
||||
echo "Dieses Skript bindet HiDrive als Dateisystem ein bzw. ein lokales NAS, sollte dieses vorhanden sein."
|
||||
echo "WakeOnLan-Pakete werden zum Starten versendet."
|
||||
remove_lock
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# === ROOT-PRÜFUNG ===
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "Dieses Skript muss als root ausgeführt werden! Bitte starte es mit sudo."
|
||||
remove_lock
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# === PARAMETER-ÜBERPRÜFUNG ===
|
||||
if [[ "$#" -ne 3 ]]; then
|
||||
echo "Benutzung: $0 <DEVICE_MAC> <WEBDAV_URL> <NFS_PATH>"
|
||||
remove_lock
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -76,10 +86,12 @@ restart_script() {
|
||||
RESTART_COUNT=$((RESTART_COUNT + 1))
|
||||
echo "$RESTART_COUNT" >"$RESTART_COUNT_FILE"
|
||||
log "Neustart des Skripts (Versuch $RESTART_COUNT von $MAX_RESTARTS)..."
|
||||
remove_lock
|
||||
exec "$0" "$@"
|
||||
else
|
||||
log "Maximale Anzahl an Neustarts erreicht ($MAX_RESTARTS). Skript wird beendet."
|
||||
rm -f "$RESTART_COUNT_FILE" # Neustart-Zähler zurücksetzen
|
||||
remove_lock
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
@ -161,3 +173,6 @@ fi
|
||||
|
||||
# Neustart-Zähler zurücksetzen, wenn erfolgreich
|
||||
rm -f "$RESTART_COUNT_FILE"
|
||||
|
||||
# === LOCK-FILE ENTFERNEN ===
|
||||
remove_lock
|
||||
|
||||
30
Utility/Lock.sh
Normal file
30
Utility/Lock.sh
Normal file
@ -0,0 +1,30 @@
|
||||
#!/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
|
||||
|
||||
LOCK_FILE="$LOCK_DIR/$(basename "$0").lock"
|
||||
|
||||
create_lock() {
|
||||
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() {
|
||||
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
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user