Scriptfrage

03/10/2009 - 22:18 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


Mfg Daniel
 

Lesen sie die antworten

#1 Fish
03/10/2009 - 22:37 | Warnen spam
Daniel Rafflenbeul :

Hallo Leute .. Bitte um Hilfe bei folgendem unter Suse Linux..

ich möchte abfragen welche prozessnummer ein Prozess hat ,



Wie beziehst du dich auf den Prozess?

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



pid_file=/home/test/yxz.pid &&
current_pid=... && # wo immer die herkommen soll
if test -f "$pid_file"; then
read stored_pid < "$pid_file" &&
if test x"$stored_pid" = x"$current_pid"; then
exit 0
else
echo "$current_pid" > "$pid_file"
fi

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



else
PROGRAMM &
echo $! > "$pid_file"
fi

Es bleibt halt die Frage, wo 'current_pid' herkommen soll. Auch wundert mich,
dass du das Programm startest, wenn die PID-Datei nicht existiert. Willst du
das Programm nicht eher dann neu starten, wenn es nicht mehr làuft?

Es gibt für sowas auch fertige Lösungen, z.B. [1,2].

[1] http://cr.yp.to/daemontools.html
[2] http://smarden.org/runit/

Ähnliche fragen