Wie kann man einen Prozess beenden, der nicht stirbt?

1

Bei meinem Dämon "setroubleshootd" auf einem Produktionsserver ist ein Fehler aufgetreten. Es braucht eine Menge CPU und wird nicht sterben, egal was passiert!

was ich versucht habe

sudo killall -9 setroubleshootd
sudo killall -9 <<pid>>
teslasimus
quelle

Antworten:

3

Die beste Lösung ist leider ein Neustart. Es steckt im Kernel fest.

Sie können versuchen, es zu entstören. Dies ist jedoch von Natur aus riskant. Dies kann zum Absturz des Kernels führen. Ein ordnungsgemäßer Neustart ist viel sicherer.

Grundsätzlich ist die Art und Weise Sie es wieder leichtgängig ist , um herauszufinden , was es tut (mit Tools wie ls /proc/<pid>/fd, topund so weiter) und machen etwas passieren zu ändern , was auch immer es aufgeklebt. Wenn es an einem Prozess hängt, versuchen Sie, diesen Prozess zu beenden. Wenn es in einer Datei hängen bleibt, versuchen Sie, diese Datei zu entfernen. Das funktioniert sehr selten, aber selbst wenn, würde ich das System als verschmutzt betrachten und es trotzdem neu starten.

Das Spiel kann dazu führen, dass mehr Prozesse "dahinter" hängen bleiben.

David Schwartz
quelle
2

Nicht die Antwort, die Sie wollen, aber wenn der Prozess nicht abbricht, haben Sie wahrscheinlich Pech - Sie müssen wahrscheinlich neu starten. (Ich stelle fest, dass der Befehl zum Töten einer PID kill -9 <> und nicht killall lautet.

Ich vermute, dass es eine sehr kleine Menge von Ereignissen gibt, die Sie umgehen können, indem Sie den Mafic_SysRQ-Schlüssel verwenden, wenn dieser aktiviert ist (wie NFS-Mounts). normalerweise nicht standardmäßig aktiviert. Mehr Infos hier.

Davidgo
quelle