Perl – Programm soll nur einmal laufen (UNIX)

Manchmal muss man unbedingt sicherstellen, dass ein Programm nur einmal läuft.
Dazu guckt das Programm in die Prozessliste und stellt hoffentlich fest, das es selbst nur einmal läuft.
Grundlage ist das Kommando pgrep.

cmd> pgrep -f mein_script
2120
8094
8119

Es liefert die Prozess_ID’s – in diesem Beispiel läuft „mein_script“ drei mal.
Im Programm zählt man nur die Zeilen und bricht bei mehr als einer Zeile ab.

$i=0;
open(CMD,"pgrep -f mein_script | ") or die;
while ( $line=<CMD> )  {
  $i++;
};
close(CMD);
exit if ( $i > 1 );


Hier weichen wir auf das externe Systemkommando pgrep aus und leiten es über eine Pipe der Standardausgabe an unser Programm. Wer also nicht mit Perl arbeitet, kann gleiche Funktionalität auch mit der Shell oder allen anderen Programmiersprachen, die meist immer Zugriff auf externe Kommandos bieten, realisieren.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert