Processus Zombie (tue le processus enfant et parent)

3

Question: Je veux m'assurer que les processus enfant et parent sont supprimés et écho s'ils sont réussis ou non. Je suis nouveau sur l'utilisation du script bash et des problèmes avec mes sorties.

#!/bin/bash
for p in $(ps jauxww | grep Z | grep -v PID | awk '{print }'); do
for everyone in $(ps auxw | grep $p | grep cron | awk '{print }');do
kill -9 $everyone;
echo(Detected zombie process:"$PID". "$usr": . Successfully Killed);
else
echo (Detected zombie process:"$PID".  "$usr": . Could not kill);
done;
done;
    
posée user3613649 25.06.2016 - 22:20
la source

1 réponse

3

Vous ne pouvez pas tuer un Zombie, son déjà mort. Il ne s'agit que d'une entrée dans la table de processus avant que le processus parent ne lise wait(2) pour le lire.

Sur une autre note, pour supprimer le processus parent de tout processus (y compris Zombie), vous pouvez facilement utiliser une combinaison de commandes ps et kill :

ps -p <pid> -o ppid=

utilisera le PPID (ID de processus parent) du processus ayant le PID (ID de processus) <pid> .

Par exemple, pour trouver le PPID du processus ayant PID 2345 :

ps -p 2345 -o ppid=

Vous pouvez le transmettre à kill en utilisant la substitution de commande $() :

kill "$(ps -p 2345 -o ppid=)"

D'autre part, pour tuer un processus en utilisant son PPID, utilisez pkill :

pkill -P <PPID>

Par exemple, pour tuer le processus ayant PPID 1234 :

pkill -P 1234

Aussi, sauf en cas d'absolue nécessité, n'utilisez pas SIGKILL ( kill -9 ) car le processus ne permet aucun nettoyage et peut entraîner des effets indésirables.

    
réponse donnée heemayl 25.06.2016 - 22:36
la source

Lire d'autres questions sur les étiquettes