Processo de zumbis (mate o processo pai e filho)

4

Pergunta: Eu quero ter certeza de que tanto o processo filho quanto o pai sejam mortos e ecoem se forem bem-sucedidos ou não. Eu sou novo em usar script bash e ter problema com a minha saída.

#!/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;
    
por user3613649 25.06.2016 / 22:20

1 resposta

3

Você não pode matar um zumbi, já está morto. Está falando apenas uma entrada na tabela de processos antes que o processo pai execute wait(2) para ler seu status de saída.

Em uma nota diferente, para matar o processo pai de qualquer processo (incluindo Zombie), você pode facilmente usar uma combinação de comandos ps e kill :

ps -p <pid> -o ppid=

fornecerá o PPID (Parent Process ID) do processo com PID (ID do processo) <pid> .

Por exemplo, para encontrar o PPID do processo com PID 2345 :

ps -p 2345 -o ppid=

Você pode passá-lo para kill usando a substituição de comando $() :

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

Por outro lado, para eliminar um processo usando seu PPID, use pkill :

pkill -P <PPID>

Por exemplo, para matar o processo com PPID 1234 :

pkill -P 1234

Além disso, a menos que seja absolutamente necessário, não use SIGKILL ( kill -9 ), pois ele não permite que o processo faça nenhuma limpeza e pode resultar em efeitos indesejados.

    
por heemayl 25.06.2016 / 22:36