Rausfinden ob Prozess XY reagiert

G

Guest

Hey,

wie kann ich rausfinden ob ein Prozess reagiert? (in meinem fall firefox).

Ich hab schon nach Signaltypen gesucht, doch leider nichts gefunden. Ich hab auch infos gefunden das tote prozesse sich mit einem Z kennzeichnen.

Wenn sich z.b Firefox aufhängt, und das FF Fenster nur noch grau ist (oder "durchsichtig"), dann kommt bei Openbox, kde, oder gnome z.b die Meldung: "Programm XY scheint eingefroren zu sein, möchten sie es beenden?" usw usf. Obwohl aber (wenn man ein ps aux macht) der Firefox-Prozess ein einfaches "S" hat.

Also dachte ich mir ich schreib ein Skript welches guckt ob Firefox den "Status" "S" hat und wenn ja, dann beendet er diesen.

Doch fand ich raus das FF auch dann ein "S" hat wenn man z.b einfach eine Seite in FF liest. Oder einfach rum googelt. Er bekommt erst ein R wenn man was richtig "intensives" macht wie ein Eintrag abschicken, oder ein Flashmovie abspielen.

Also ist die Methode auch nutzlos.

Deswegen frage ich mich wie es Openbox/kde/gnome/usw machen. Den schließlich erkennen die irgendwie ob z.b jetzt FF reagiert. Obwohl er in der Prozessliste als "anwesend" vertreten ist.

Also zurück zu meiner anfänglichen Frage: Gibt es irgendeine Methode raus zu finden ob ein Prozess reagiert? Meinetwegen mit einem Tool o.ä (wenn man es in der/einem Shell/Script verwenden kann).
 
Wenn du das Signal 0 an den Prozess schickst und nichts zurück bekommst, reagiert der Prozess nicht mehr. In einem Bash-Skript könnte das z.B. so aussehen:

Code:
...
if kill -0 ${PID} 2>/dev/null
then
  # signal angenommen
else
  # signal nicht angenommen
fi
...
 
Wenn ich

"kill -0 $PID 2>/dev/null" ausführe. Passiert einfach nichts >

Code:
#: kill -0 15411 2>/dev/null
#:
Und ohne "2>/dev/null"

Code:
[FONT=monospace]#: kill -0 15411
#: 
[/FONT]

15411 ist Firefox. Und er "funktioniert" auch grad, sonst könnte ich ja das hier nicht schreiben :)

Auch wenn ich "kill -0 392752385" (also mir irgendeine nummer ausdenke (ob mit /dev/null oder nicht)) versuche, passiert genau das selbe > nichts.

Edit:

Ok, in Verbindung mit if funktioniert es O_o

Warum?
 
Zuletzt bearbeitet von einem Moderator:
Die Shell zeigt dir nunmal nicht den Rückgabewert an. Dieser wird aber von if ausgewertet und nicht der Output.

PS: Die Werbung hier im Board nervt. X( Das musste mal gesagt werden.
 
Diese Werbung, die angeblich nur Besuchern angezeigt wird.
Klick

Nur dass ich als Besucher wohl kaum mit meinem Account posten könnte. *hoff*
 
PS: Die Werbung hier im Board nervt. Das musste mal gesagt werden.
Ja, beim VB3-Unixboard-Style wird der Werbeblock zur Zeit leider aus unerfindlichen Gruenden angezeigt. Es wird dran gearbeitet ;)
 

Ähnliche Themen

Mal komplett was neues aufbauen ?

Ablösen von Exchange2k3, OWA und W2k3 AD

Zurück
Oben