Prüfen, ob ein Prozess noch läuft

Datum: 2001-03-12
Quelle: suse-linux

Worum ging es?

Auslöser war eine Anfrage, wie man bei einem unkontrollierten Abbruch eines Scripts trotzdem eine von diesem Script erzeugte Lock-Datei beseitigen kann. Mit trap kann man zwar einige solcher Fälle abfangen, aber eben nicht alle (einen kill -9 zum Beispiel nicht).

Code
lockfile=/path/to/lockfile
if test -f $lockfile; then
  ps -p `cat $lockfile` >/dev/null 2>&1 || rm -f $lockfile
fi
test -f $lockfile && exit -1 || echo $$ >$lockfile
Beschreibung

Dieser Codeschnipsel ist als Beispiel zu verstehen, er muss erst an die konkreten Gegebenheiten angepasst werden. Der Ansatz geht so an die Sache ran: Beim Start des Scripts wird kontrolliert, ob eine existierende Lockdatei zu einem noch laufenden Prozess gehört. Wenn nicht, wird sie mit der Prozess-ID des aktuellen Scripts überschrieben.