Devo matar o processo de zumbis no meu sistema?

19

Como sou novato em sistemas Linux / Unix e apenas li sobre processos zumbis , tenho uma pergunta. Eu tenho 10 deles agora. Preciso matá-los e se sim, por quê? Eles são uma carga no meu sistema?

592 processes: 581 sleeping, 1 running, 10 zombie, 0 stopped
    
por Jason Paddle 27.07.2012 / 16:20

4 respostas

28

Você não pode matar um zumbi, ele já está morto.

Os recursos desse processo são gratuitos e estão disponíveis para outros processos. O que resta é uma entrada na tabela de processos. Isso não tem influência no desempenho, não se preocupe.

    
por 27.07.2012 / 16:30
16

What are these zombie processes that show up in ps? I kill them but they don't go away!

Zombies are dead processes. You cannot kill the dead. All processes eventually die, and when they do they become zombies. They consume almost no resources, which is to be expected because they are dead! The reason for zombies is so the zombie's parent (process) can retrieve the zombie's exit status and resource usage statistics. The parent signals the operating system that it no longer needs the zombie by using one of the wait() system calls.

When a process dies, its child processes all become children of process number 1, which is the init process. Init is always waiting for children to die, so that they don't remain as zombies.

If you have zombie processes it means those zombies have not been waited for by their parent (look at PPID displayed by ps -l). You have three choices: Fix the parent process (make it wait); kill the parent; or live with it. Remember that living with it is not so hard because zombies take up little more than one extra line in the output of ps.

Fonte: link

E no caso de você estar em uma matança, esse segmento de superusuário pode ser interessante para você: Como você encontra o processo pai de um zumbi? processo?

    
por 27.07.2012 / 16:33
7

Você não precisa matá-los.

Para criar um conhecimento básico:

Todo processo é filho de um processo pai (exceto pelo processo init, mas não precisamos nos preocupar com isso).

Quando um processo filho termina a execução, ele ainda pode conter dados que o processo pai deseja acessar, geralmente um código de saída que descreve o resultado do processo filho (foi bem-sucedido? Erro? Qual foi o código de erro? ).

Um processo filho finalizado fica pendurado na tabela de processos como um processo zumbi até que o processo pai "colha" ou aguarde o processo filho, que é simplesmente o processo pai dizendo ao SO que ele não precisa mais desse processo filho ; Ele leu todos os valores de retorno desejados e é feito com ele. Neste ponto, o sistema irá limpar a entrada na tabela de processos.

    
por 27.07.2012 / 16:33
3

Este processo não precisa ser eliminado.

Caso você queira matá-lo de qualquer maneira (por qualquer motivo), certifique-se de atirar na cabeça, aqui está um comando útil:

kill -HUP 'ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print $2}''

De link

    
por 19.03.2014 / 13:59

Tags