wie kann ich denn kontrollieren ob ein Programm noch aktiv ist, und falls nicht (Absturz z.B.) dieses erneut starten lassen (shellscript ...) ? -- Thomas Götz ICQ 22643485 pgp-key available, just ask ;-)
On 2002-12-18 04:05:07, Thomas Goetz wrote:
wie kann ich denn kontrollieren ob ein Programm noch aktiv ist, und falls nicht (Absturz z.B.) dieses erneut starten lassen (shellscript ...) ?
Das kommt drauf an. Wenn das Programm die PID in ein File schreibt, kannst Du mit einem cronjob checken, ob die PID noch aktiv ist. Ansonsten mußt Du nach dem Programmnamen sehen.... z.B. # > ps aux | grep syslogd root 310 0.0 0.1 1396 420 ? S Dec15 0:00 /sbin/syslogd Wenn Du weißt, daß die PID z.B. 310 ist, kannst Du auch danach greppen. Aber vorsicht, es kann sein, daß die Zahl der PID auch sonst in der Ausgabe vorhanden ist. Schau Dir sonst mal "man checkproc" an. HTH Volker
Kroll, Volker schrieb:
On 2002-12-18 04:05:07, Thomas Goetz wrote:
wie kann ich denn kontrollieren ob ein Programm noch aktiv ist, und falls nicht (Absturz z.B.) dieses erneut starten lassen (shellscript ...) ?
[...]
z.B. # > ps aux | grep syslogd root 310 0.0 0.1 1396 420 ? S Dec15 0:00 /sbin/syslogd
Kleine Ergänzung, da o. a. Befehl i. d. R. auch sich selbst findet: # > ps aux | grep syslogd | grep -v grep [...] Raimund
Hallo, On Thu, 19 Dec 2002, Raimund Hölle wrote:
Kroll, Volker schrieb:
z.B. # > ps aux | grep syslogd root 310 0.0 0.1 1396 420 ? S Dec15 0:00 /sbin/syslogd
Kleine Ergänzung, da o. a. Befehl i. d. R. auch sich selbst findet:
# > ps aux | grep syslogd | grep -v grep
ps aux | grep '[s]yslogd' -dnh -- MCSE: "Microsoft Certified Stupidity enclosed" -- A. Spengler in dasr
tom@richmountain.de:
wie kann ich denn kontrollieren ob ein Programm noch aktiv ist, und falls nicht (Absturz z.B.) dieses erneut starten lassen (shellscript ...) ?
in etwa so: #!/bin/sh ulimit -c unlimited # core-files erzeugen rm -f core touch core while [ -f core ] do rm -f core $PROG ....... done Aber Achtung: wenn das Proggi immer wieder abstürzt, dann kommt es da zu einer Endlosschleife. Also ggf einen Zähler einbauen. Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 juergen@informatik-vollmer.de,vollmer@cocolab.de,Juergen.Vollmer@acm.org www.informatik-vollmer.de
Jürgen Vollmer schrieb:
tom@richmountain.de:
wie kann ich denn kontrollieren ob ein Programm noch aktiv ist, und falls nicht (Absturz z.B.) dieses erneut starten lassen (shellscript ...) ?
in etwa so:
#!/bin/sh ulimit -c unlimited # core-files erzeugen rm -f core touch core while [ -f core ] do rm -f core $PROG ....... done [...]
Die Lösung hat für mich ein Problem - nicht bei jedem Absturz wird ein core-dump erzeugt, nur bei SIGBUS o.ä.; wenn ich richtig gelesen habe, war "Absturz" auch nur ein "z.B.". Ich würde da die Lösung von Thomas durch Auswertung der Prozessliste vorziehen (funktioniert unter allen Linux/UNIX), oder, wenn's Linux-spezifisch sein darf, Jan's Vorschlag mit "pidof". "checkproc" / "startproc" sind SuSE-spezifisch, funktionieren aber gut. Gruß Raimund
On Mit, 18 Dez 2002 at 16:05 (+0100), Thomas Goetz wrote:
wie kann ich denn kontrollieren ob ein Programm noch aktiv ist, und falls nicht (Absturz z.B.) dieses erneut starten lassen (shellscript ...) ?
man checkproc man startproc oder: <ungetestet> test -z "`pidof /Pfad/zum/Programm`" && /Pfad/zum/Programm </ungetestet> Das als cron-Job im gewuenschten Intervall laufen lassen - fettich. Jan
participants (6)
-
David Haller
-
Jan.Trippler@t-online.de
-
Jürgen Vollmer
-
Kroll, Volker
-
Raimund Hölle
-
Thomas Goetz