Comme dans les réponses ci-dessus, le moyen le plus efficace de mettre fin à tout processus est SIGKILL
, par exemple kill -9 process_id
.
Cependant, il existe des processus qui sont tout simplement impossibles à Force Quit
ni kill
. Ils ont appelé comme zombie
processus.
Voici un petit script qui va créer un zombie
processus pendant deux minutes:
perl -e 'if($p=fork) {print "unkillable pid:$p\n" ;system("ps -l"); sleep(120)}'
Exécutez le script ci-dessus dans le terminal et vous obtiendrez une sortie, comme la suivante:
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
Si vous cochez la colonne d'état pour le processus impossible à tuer (dans ce cas: 50571), vous voyez le Z
drapeau, ce qui signifie zombie
.
Vous pouvez essayer d'envoyer n'importe quel kill
signal (par exemple kill -9 50571
) et le processus existera toujours. Quoi qu'il en soit, cela ne blesse pas beaucoup votre système, car il n'existe en fait pas - occupe uniquement la table de processus.
Dans l'exemple ci-dessus, en 120 secondes, il sera effacé.