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

Re: Überprüfen ob ein Script schon läuft



On Tue, Mar 15, 2005 at 09:28:58PM +0100, Thomas Antepoth wrote:
> 
> 
> um im Shell-Script herauszufinden, ob ein Prozess schon läuft, wird die 
> Prozessliste nach dem Namen des Scriptes in $0 gegrepped und das Pattern 
> "grep" entfernt. Ist die Anzahl der Prozesse größer als 1 dann läuft der 
> Prozess bereits und das Script muss abgebrochen werden.
> 
> Soweit die Theorie.
> 
> Dieses Scriptlein ist zum Testen:
> 
> == cut ==
> #!/bin/bash
> 
> isrunning=`ps xufa | grep "$0" | grep -v grep | wc | awk '{ print $1 }'`
> echo $isrunning
> 
> s=`ps xufa`
> isrunning=`echo "$s" | grep "$0" | grep -v grep | wc | awk '{ print $1 }'`
> echo $isrunning
> == cut ==
> 
> Der erste "echo" liefert "4" - die beim Start von nur einer Instanz falsch 
> ist - der zweite "echo" liefert das korrekte "1".
> 
> Wo - mein Verständnis mal beiseite gelassen - hebt's da? Diese beiden 
> Zeilen "isrunning=..." müßten doch äquivalent sein, oder?

Nicht unbedingt. In der zweiten Version dürfte der Output von ps xufa als
Parameter des Befehls echo in der Prozesstabelle auftauchen, in der ersten
nicht.

Gruß
Christian

-- 
Christian Knoke            * * *            http://cknoke.de
* * * * * * * * *  Ceterum censeo Microsoft esse dividendum.



Reply to: