Wie in den obigen Antworten ist der stärkste Weg, einen Prozess zu beenden SIGKILL
, z kill -9 process_id
.
Es existieren jedoch Prozesse, die schlicht unmöglich sind Force Quit
noch kill
. Sie riefen als zombie
Prozesse.
Hier ist ein kurzes Skript, das einen zombie
Prozess für zwei Minuten erstellt:
perl -e 'if($p=fork) {print "unkillable pid:$p\n" ;system("ps -l"); sleep(120)}'
Führen Sie das obige Skript im Terminal aus und Sie erhalten die Ausgabe wie folgt:
unkillable pid:50571
UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD
501 47380 47379 4006 0 31 0 2448416 2900 - S 0 ttys000 0:00.36 -bash
501 50570 47380 4006 0 31 0 2443512 1424 - S+ 0 ttys000 0:00.01 perl -e if($p=fork) {print "u
#THIS-> 501 50571 50570 2006 0 0 0 0 0 - Z+ 0 ttys000 0:00.00 (perl)
501 12795 12794 4006 0 31 0 2448296 1752 - S+ 0 ttys001 0:00.75 -bash
501 50123 50122 4006 0 31 0 2448296 2688 - S+ 0 ttys002 0:00.14 -bash
Wenn Sie die Statusspalte für den unkillable-Prozess (in diesem Fall: 50571) überprüfen, sehen Sie das Z
Flag, was bedeutet zombie
.
Sie können versuchen, ein beliebiges kill
Signal zu senden (z. B. kill -9 50571
), und der Vorgang bleibt bestehen. Wie auch immer, es tut Ihrem System nicht viel weh, weil es tatsächlich nicht existiert - es belegt nur die Prozesstabelle.
Im obigen Beispiel wird es in 120 Sekunden gelöscht.