Markus: Überprüfen auf Prozessen und Dateien

Beitrag lesen

Hallo ;),
Irgendwie will bei mir nichts hinhauen.

Ich habe ein Skript (AZ.pl), welches je nach Situation mehrmals gleichzeitig gestartet werden kann. (Das Skript AZ.pl befindet sich in einer Batch-Datei und diese wird unter Umständen mehrfach gestartet) Dieses Skript bearbeitet Dateien in einem bestimmten Verzeichnis. Nun will ich sicherstellen, dass wenn AZ.pl momentan schon 1x läuft, dass das zweite, dritte usw. AZ.pl-Skript erst anfängt, wenn das erste fertig, dann das zweite usw. ist und immer die nachfolgend gestarteten Batch-Dateien "warten".

Wie kann ich in Perl auf einen Prozess prüfen ob er schon läuft?
Wenn ja, dann soll er sleep 10; machen und dann nochmal überprüfen, wenn das Skript AZ.pl nicht mehr läuft kann ein weiteres gestartet werden.

Problem, was ist wenn zufällig gleichzeitig zwei AZ.pl starten wollen? Gibt es da irgendwas damit sicher immer nur 1x AZ.pl läuft?

An einer anderen Stelle gibt es fast den gleichen Fall.
Es wird ein Skript ausgeführt mit dem Namen Work.pl. Dieses Skript kopiert zuerst die zu bearbeitenden Dateien (z.B. Haus01.10.2008) und benennt die Kopien genau gleich mit einem x davor (z.B. xHaus01.10.2008). Dient um aus den Dateien mit x zu lesen und wieder eine neue Datei mit dem alten Namen zu schreiben. Am Ende werden alle Dateien mit x am Anfang gelöscht. Das zweite Work.pl Skript soll erst dann anlaufen, wenn es keine Datei mehr gibt, die mit x beginnt.

Auch wenn beim zweiten, dritten Work.pl Skript keine Änderungen vorgenommen werden, sondern Sie nur zum Check nochmals "drüber laufen" müssen sie warten.

Hier mal der Kuddelmuddel den ich bis jetzt gemacht habe am Anfang des Skriptes.

opendir (CHECK, $verz);
 $wert = "0";
 do {
  @stop= grep { $_=~(/(^xHaus|^xHgu)(.*)(.csv)$/) } readdir(CHECK);
  foreach (@stop){
   if ($_=~(/(^xH)(.*)(.csv)$/)){
    sleep 10;
   }
   else {
    $wert = "1";
   }
  }
 } until ($wert eq "1");
closedir(CHECK);

Aber irgendwie will die Schleife bei mir nicht solange gehen, solange eine Datei mit x existiert, sondern nur 1x und dann macht das Programm weiter. Irgendwie hab ich voll das Blackout gerade eben >.<.

Wäre super wenn mir hier jemand Vorschläge oder Tips geben kann.
Falls sich jemand meldet, vielen Dank.

mfg
Markus