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

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



Moin Bruno,


On Wed, 16 Mar 2005, Bruno Hertz wrote:

> > Da könnte man doch vollkommen blasenfrei ein Paketchen aus dem Checkproc 
> > schneidern?
> Nur zu. Auch die PID resp. lock file Lösung ist gut.

Danke für die Ermunterung - hab's mir zu Herzen genommen :-)

Die Pakete liegen momentan auf:

http://212.227.20.60/debian/killproc_2.06-1.diff.gz
http://212.227.20.60/debian/killproc_2.06-1.dsc
http://212.227.20.60/debian/killproc_2.06-1_i386.changes
http://212.227.20.60/debian/killproc_2.06-1_i386.deb
http://212.227.20.60/debian/killproc_2.06.orig.tar.gz

Ich bitte um tüchtige Ohrlaschen bezüglich dessen, was an den Paketen 
alles falsch ist. Das ist mein erstes Debian-Paket und ich kann somit 
garnicht anders als alles erst mal falsch machen und tonnenweise 
Dokumentation mangels Aufnahmefähigkeit einfach zu ignorieren... :-)

Das Test-Script sieht nun so aus:

== cut ==
#!/bin/bash

if `checkproc $0` ; then
        echo "Ich laufe doch schon woanders..."
        echo "und zwar da: `checkproc -v $0`"

else
        echo "Endlich alleine auf dem Rechner..."
fi

echo "Ausgabe von pidof: `pidof -x $0`"

sleep 30
== cut ==


Die Ausgabe ist entsprechend:


== cut ==
a15166696:/usr/local/bin# local-backup.sh &
[3] 3722
a15166696:/usr/local/bin# Endlich alleine auf dem Rechner...
Ausgabe von pidof: 3722

a15166696:/usr/local/bin# local-backup.sh &
[4] 3726
a15166696:/usr/local/bin# Ich laufe doch schon woanders...
und zwar da: 3722
Ausgabe von pidof: 3726 3722
local-backup.sh &
[5] 3731
a15166696:/usr/local/bin# Ich laufe doch schon woanders...
und zwar da: 3726 3722
Ausgabe von pidof: 3731 3726 3722

a15166696:/usr/local/bin#
== cut ==

Wie man sieht, berücksichtigt "pidof" nicht, wenn ein Script sich selbst 
abfragt. Dazu wäre ein zweiter Check auf die "$$" Variable notwendig - 
geht das nur mir so oder reduziert sich da die Lesbarkeit?

Und lesbarer als ein 

s=`ps xufa`
isrunning=`echo $s | ... `
if [ $isrunning -gt 1 ] ; then ...

ist der Checkproc auf jeden Fall.


Herzlichen Dank noch einmal an alle


Thomas Antepoth

Reply to: