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: