Bash Template mit Lock-Datei
Funktion
Das Template erstellt in „/var/run/“ eine PID-Datei mit dem Namen von dem Script. Beim erneuten Start wird geprüft, ob das Script bereits läuft.
Features
- Verhindert das doppelte Starten von einen Script
- Prüft mit „ps“, ob zu der alten PID noch ein Prozess läuft.
- Manueles löschen der Lock-Datei ist auch im Fehlerfall nicht notwendig
- Automatische Nameswahl von Lock-Datei
Quellcode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#!/bin/bash #Name: [Name] #Description: [Beschreibung] #Dependencies: [Abhänigkeiten] #Author: Thomas Jungbauer #License: WTFPL #License-Text-Url: http://sam.zoy.org/wtfpl/COPYING #Version: 01 #Relase-Date: [Datum der Ersterstellung] #Last-change-Date: - #Lock-Datei wird geprüft und bei Bedarf erstellt. TEMPLATE_PIDFILE="/var/run/${0##*/}.pid" if [ -f $TEMPLATE_PIDFILE ]; then TEMPLATE_PID=`tr -dc '0-9' < $TEMPLATE_PIDFILE` if [ `ps --format command --noheader --pid $TEMPLATE_PID | grep -i ${0##*/} | wc -l` = "0" ]; then #Es läuft kein Prozess, PID wird aktuallisiert echo $$ > $TEMPLATE_PIDFILE else #Prozess läuft noch, script Beenden echo "Fehler: Script läuft bereits" exit 1 fi else #Kein PID-File vorhanden, PID wird erstellt echo $$ > $TEMPLATE_PIDFILE fi #### Hier beginnt das Script sleep 20 #### Hier Ende das Script #Lock-Datei wird entfernt rm $TEMPLATE_PIDFILE exit 0 |