Scriptfrage.. werr kann helfen ..??

03/10/2009 - 22:56 von Daniel Rafflenbeul | Report spam
Hallo Leute .. Bitte um Hilfe bei folgendem unter Suse Linux..

ich möchte abfragen welche prozessnummer ein Prozess hat , diese nummer mit
der in einem (vielleicht)
existierendem pid file zu vergleichen
also:

if exist /home/test/yxz.pid
do
check ob beide nummern gleich sind
wenn ja ok , exit
wenn nein schreibe die aktuelle nummer in das pidfile

wenn pidfile nicht existiert
dann starte programm
und schreibe Prozessnummer in Pidfile
und exit


Geht in meinem direkten Fall um nen IRC Server..

Das checkprogramm welches dabei ist , ist ziemlich saublöd

Startet den IRC immer wieder weil es kein pid findet..

Kann er auch nicht weil , um das Pid zu erzeugen müsste man ihn per script
starten und NICHT direkt was dieses Checkprogramm versucht.

In dem Checkprogramm kann man auch nicht das Startscript angeben..

Also eigenes Checkprogramm erstellen...


Deshalb soll der Check gemacht werden ob das Pidfile überhaupt existiert..
Wenn nein dann starte das Programm (wegen meiner da dann auch direkt) UND
erstelle ein aktuelles Pidfile
mit der aktuellen Prozessnummer mit der jetzt gerade das Programm gestartet
wurde.


Existiert ein Pidfile, um sicher zu gehen, Frage mit ( was weiss ich ,
vielleicht ps aux|grep irc |awk prozessid oder so)
die aktuelle Prozessnummer ab und vergleiche sie mit der Nummer die im
Pidfile steht
sind sie gleich, ok , Programm làuft und alles ist ok
Sind die Nummern nicht gleich, ein möglicherweise altes pidfile existiert
noch ok, da Programm ja wirklich làuft, schreibe ich die NEUE Nummer in das
Pidfile

Bei der nàchsten abfrage mit diesem Script müsste es ja mit 0 nen exit
machen da das Programm nochh làuft,
das pidfile existiert und beide Nummern gleich sind.


Mfg Daniel
 

Lesen sie die antworten

#1 Marcel Bruinsma
04/10/2009 - 07:22 | Warnen spam
Am Samstag, 3. Oktober 2009 22:56, Daniel Rafflenbeul a écrit :

if exist /home/test/yxz.pid
do
check ob beide nummern gleich sind
wenn ja ok , exit
wenn nein schreibe die aktuelle nummer in das pidfile

wenn pidfile nicht existiert
dann starte programm
und schreibe Prozessnummer in Pidfile
und exit



progpath=/home/test/bin/yxzd
progopts='-x -y9 -z/etc/yxz'
pidpath=/home/test/yxz.pid

if [ -s "$pidpath" ]; then
read fpid <"$pidpath"
set -- $(pidof "$progpath")
for pid; do
[ $pid -ne $fpid ] || exit 0
done
if [ "$1" ]; then
echo $1 >"$pidpath"
exit 0
fi
fi
"$progpath" $progopts &
echo $! >"$pidpath"
exit 0

printf -v email $(echo \ 155 141 162 143 145 154 142 162 165 151 \
156 163 155 141 100 171 141 150 157 157 056 143 157 155|tr \ \\\\)
# Live every life as if it were your last! #

Ähnliche fragen