[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Checken, ob ein (Perl-)Skript schon läuft



Moin mitnanner,

On Sat, Apr 21, 2012 at 12:57:30AM +0200, Andre Tann wrote:
> ich möchte gerne innerhalb eines (Perl-)Skriptes prüfen, ob dieses
> Skript schon anderweitig gestartet wurde. Wenn das nikcht der Fall ist,
> dann soll das Skript weiterlaufen, sonst soll es sich beenden.

es gibt ein Program, das diese Frage beantwortet: 'pidof'.

Da ich den Aufruf nur aus der 'bash' heraus kenne, gebe ich ein dazu
passendes Anwendungsbeispiel:


if [ -z `pidof pppd` ]; then
	echo "ppp not online"
fi

falls solche 'if'-Abfrage unter Perl nicht geht (was ich seltsam fände),
könnte man 'pidof' auch direkt aufrufen:

pidof ppd && echo "ppp online" || echo "ppp not online"


Wichtig: Ist das gesuchte Program ein Skript,
muß 'pidof' mit der Option '-x' aufgerufen werden:

pidof -x prog_skript && echo "prog_skript is running"

(Die 'pidof'-Abfrage prüft m.W. nur, ob die 'pid'-Datei existiert, d.h.
ob das gesuchte Programm erfolgreich gestartet wurde.

Dabei wird nicht geprüft, ob das betreffende Programm etwa "hängt".

Das könnte das Programm z.B. selbst "beweisen", indem es nach einer
definierten 'sleep'-Periode (keine CPU-Belastung) in eine "stub"-Datei
hineinschreibt, so daß deren letztes "modify"-Datum gelesen werden könnte.

Ob 'ps' ein "hängendes" Programm korrekt erkennt, weiß ich nicht sicher.)


Gruß Wilko


Reply to: