So überprüfen Sie, ob sich ein Prozess im Wartezustand befindet (Linux)
Gibt es einen Befehl in Linux, über die kann ich wissen, ob der Prozess ist in der hang-Zustand.
Kommentar zu dem Problem - Öffnen
dies ist ein superuser.com Frage.
@rsilva4 Oder eher ein unix ein
strace -p $process_id
- wenn es nicht kontinuierlich-Ausgang, das bedeutet, dass es ist, etwas zu warten. Wenn er wartet zu lange, Sie könnte in Erwägung ziehen, dass "hung". InformationsquelleAutor der Frage anil | 2010-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist kein Befehl, aber einmal hatte ich eine sehr dumme hack zu erreichen etwas ähnliches. Schrieb ich ein Perl-script, welches in regelmäßigen Abständen (alle 30 Sekunden in meinem Fall):
ps
zu finden, die PID-Liste der überwachten Prozesse (zusammen mit exec-Zeit, etc.)gdb
Anhängen an den Prozess mit der PID, dumping stack-trace aus es mitthread apply all where
, ablösen von dem Prozess,Aber das war sehr sehr sehr sehr grob hacken, geschieht, um eine über-zu-sein-verpasst die deadline und es wurde entfernt, ein paar Tage später, nach einem fix für den buggy-Anwendung wurde schließlich installiert.
Anders, als alle anderen-Responder absolut richtig kommentiert, gibt es keinen Weg, um herauszufinden, ob der Prozess erhängt oder nicht: ganz einfach, weil der hang auftreten, für so viele Gründe, oft gebunden an die Anwendungslogik.
Nur so ist für die Anwendung selbst in der Lage ist, der angibt, ob es lebendig ist oder nicht. Einfachste Weg könnte zum Beispiel eine periodische log-Nachricht "i' m alive".
InformationsquelleAutor der Antwort Dummy00001
könnten Sie überprüfen die Dateien
InformationsquelleAutor der Antwort RRM
Was meinst du mit 'hang-Staat"? In der Regel, ein Prozess, der nicht reagiert, und mit 100% eines CPU steckt in einer endlos-Schleife. Aber es gibt keine Möglichkeit, um zu bestimmen, ob das passiert ist oder ob der Prozess möglicherweise nicht erreichen schließlich eine loop-exit-Zustand und tragen auf.
Desktop hängen Detektoren arbeiten Sie einfach durch senden einer Nachricht an die Anwendung-Ereignis-Schleife und sehen, ob es irgendeine Reaktion. Wenn es nicht für eine bestimmte Menge von Zeit, die Sie sich entscheiden, die app hat sich 'aufgehängt'... aber es ist durchaus möglich, es war nur etwas kompliziert und wieder zum Leben kommen, in einem Augenblick, sobald es fertig ist. Jedenfalls, das ist nicht etwas, das Sie verwenden können für jeden beliebigen Prozess.
InformationsquelleAutor der Antwort bobince
Leider gibt es keine hung-Status für einen Prozess. Jetzt aufgehängt werden können deadlock. Diesem block Stand. Die threads eines Prozesses blockiert werden. Die anderen Dinge könnte sein Leben Schloss, wo der Prozess läuft, aber das tun die gleiche Sache wieder und wieder. Dieser Prozess ist in fahrbereitem Zustand. So wie Sie sehen können gibt es keine definitive hing Staat.
Wie vorgeschlagen, können Sie verwenden Sie den top Befehl, um zu sehen, wenn der Prozess mit 100% CPU oder viel Speicher.
InformationsquelleAutor der Antwort Manoj R