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

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



David Haller schrieb:
> Hallo,
> 
> Am Sat, 21 Apr 2012, Ulf Volmer schrieb:
>> 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.
>>>
>>> Überlegt habe ich, die Prozesstabelle nach dem Skriptnamen zu
>>> durchsuchen, etwa
>>>
>>> 	ps a | grep /pfad/zum/skrip[t]
>>>
>>> Das ist aus vielerlei Gründen blöd. 
>>
>> Die IMHO einzig saubere Lösung ist es, es so zu machen, wie andere Daemons
>> es auch machen, pid- File erzeugen und auf dessen Existenz prüfen.
> 
> Unnötig. Und die Existenz allein ist, öhm, bestenfalls notwendig, aber
> nicht hinreichend.
Nun dann schreibt man die eigentliche PID des entsprechenden Prozesses
in den PID-File.
Wenn dann der PID-File existiert, kann prüfen auch ob der dazugehörige
Prozess noch existiert. So kann man sicher sein das nicht vergessen
wurde, den PID-File zu löschen, beim beenden des Scripts (z.B. Absturz
von den Script oder den Perl-Interpreter).
Außerdem kann man dann eventuelle hinterlassene Ressources des
abgestürzten ursprünglichen Scripts ordnungsgemäß Aufräumen.
> ...
> 
> Generell sind PID/Lockfiles natürlich sinnvoll.  Unter SUSE gibt's
> dafür z.B. start-/check-/killproc wo man ein PID-File angeben
> kann. Anderswo sollte es sowas auch geben (deamon ...?) oder halt
> ggfs. die deamontools oder so. Oder man macht's im Script selber.
>
Dafür gibt es für Debian "start-stop-daemon (8)" welches immer
Installiert ist.

-- 
Gruß Jochen


Reply to: