Tuer un processus défunt sur le système UNIX [fermé]
-
21-08-2019 - |
Question
J'ai un processus défunt sur mon système:
abc 22093 19508 0 23:29 pts/4 00:00:00 grep ProcA
abc 31756 1 0 Dec08 ? 00:00:00 [ProcA_my_collect] <defunct>
Comment puis-je tuer le processus ci-dessus, sans un redémarrage de la machine? J'ai essayé avec
kill -9 31756
sudo kill -9 31756
La solution
Vous avez tué le processus, mais un processus mort ne disparaît pas de la table de processus jusqu'à ce que son processus parent effectue une tâche appelée « récolte » (essentiellement appeler pour ce processus wait(3)
à lire son état de sortie). processus morts qui n'ont pas été engrangés sont appelés « les processus zombie . »
L'identifiant du processus parent que vous voyez pour 31756 est l'ID de processus 1, qui appartient toujours à init
. Ce processus devrait récolter ses processus zombie périodiquement, mais si elle ne peut pas, ils resteront zombies dans la table de processus jusqu'à ce que vous redémarrez.
Autres conseils
Avez-vous vérifié un processus enfant qui peut avoir besoin d'être tué en premier? Parfois, la mise en confiture est la ligne ...
Essayez ps -ef --forest
pour voir ce qui peut être en dessous (le cas échéant) tuer alors que d'abord, puis celui que vous connaissez déjà
Si kill -9 ne parvient pas à tuer un processus, la cause est presque toujours un bug système pilote ou d'exploitation.
Le processus d'initialisation a adopté le processus, mais il ne peut pas moissonner. C'est-à-dire: quand initialisation appelle attente (2) ce processus n'est pas retourné. L'un des principaux objectifs de init est de récolter des enfants orphelins morts, de sorte que le problème n'est pas que son parent est mort avant qu'il ne soit moissonnée. Pensez: Sinon, qui moissonne les résultats d'un processus nohup'd après la déconnexion
Tuer les enfants du processus défunt est peu susceptible d'aider à moins qu'ils ne soient en quelque sorte liés au bogue particulier que vous voyez.
Vous allez probablement pas être en mesure de se tuer le parent ne résout pas. Quelle qu'en soit la raison, les systèmes ne collecte pas ce processus zombie.
FWIW, je l'ai vu un peu sur les SCO Openserver boxen que j'ai utilisé pour administrer. l'utilisation multi-utilisateurs lourd et peu de ressources système, mais il ne semble pas faire du mal à quoi que ce soit. Juste m'a ennuyé. :)
Le processus se bloque, par exemple dans probablement ignorant des signaux comme SIGPIPE, vérifier avec ce qui se passe strace -p <pid>
ici.