Processos de zumbis ainda vivos e funcionando bem, mas não podem ser mortos?

1

Estou entendendo mal alguma coisa ou isso não seria possível?

Todos os meus processos daemon estão no estado zumbi depois que eu tentei parar o serviço de controle:

# ps ax | grep controller
13768 pts/11   S+     0:00 grep controller
26866 ?        Zl    18:56 [controller] <defunct>
26870 ?        Zl    18:57 [controller] <defunct>
26871 ?        Zl    18:45 [controller] <defunct>
26876 ?        Zl    13:17 [controller] <defunct>
26877 ?        Zl    10:28 [controller] <defunct>
26880 ?        Zl    18:18 [controller] <defunct>
26881 ?        Zl    12:01 [controller] <defunct>
26882 ?        Zl    18:18 [controller] <defunct>

Ainda assim, as portas ainda estão abertas (embora o netstat não encontre o nome do processo)

# netstat -tlpn | sort
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1180/sshd
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      11882/httpd
tcp        0      0 10.0.0.50:8890              0.0.0.0:*                   LISTEN      -
tcp        0      0 10.0.0.50:8891              0.0.0.0:*                   LISTEN      -
tcp        0      0 10.0.0.50:8892              0.0.0.0:*                   LISTEN      -
tcp        0      0 10.0.0.50:8896              0.0.0.0:*                   LISTEN      -
tcp        0      0 10.0.0.50:8897              0.0.0.0:*                   LISTEN      -
tcp        0      0 10.0.0.50:8900              0.0.0.0:*                   LISTEN      -

Embora o lsof possa ver os nomes dos processos

# lsof -i -n -P | grep 10.0.0.50 | grep LISTEN
controlle 26866  devuser   82u  IPv4    323641      0t0  TCP 10.0.0.50:8890 (LISTEN)
controlle 26870  devuser   82u  IPv4    323629      0t0  TCP 10.0.0.50:8891 (LISTEN)
controlle 26871  devuser   82u  IPv4    323635      0t0  TCP 10.0.0.50:8892 (LISTEN)
controlle 26876  devuser   82u  IPv4    323643      0t0  TCP 10.0.0.50:8896 (LISTEN)
controlle 26877  devuser   82u  IPv4    323615      0t0  TCP 10.0.0.50:8897 (LISTEN)
controlle 26880  devuser   82u  IPv4    323647      0t0  TCP 10.0.0.50:8900 (LISTEN)
controlle 26881  devuser   82u  IPv4    323649      0t0  TCP 10.0.0.50:8901 (LISTEN)
controlle 26882  devuser   82u  IPv4    323631      0t0  TCP 10.0.0.50:8902 (LISTEN)

E o mais estranho de tudo, esses processos de zumbis parecem estar funcionando bem:

# curl http://10.0.0.50:8892/status
{"status": "ok"}

Mas kill ing os processos para fazê-los parar (eu preciso atualizá-los, portanto, tentando detê-los em primeiro lugar) não tem nenhum efeito.

Eu provavelmente posso reiniciar para matar os processos, a fim de atualizá-los, mas seria bom descobrir que o WTF está acontecendo aqui com processos invencíveis de execução em execução ...

    
por Shish 25.04.2014 / 15:37

2 respostas

1

kill -9 exterminará esses zumbis.

Normalmente, zumbis acontecem quando o pai morre e os processos filhos não são desligados corretamente pelo pai antes de sair. Isso acontece com mais frequência se você kill do pai e ele não desligam (e levam todos os filhos com ele). Isso é semelhante a um processo órfão.

    
por 25.04.2014 / 16:08
0

Um processo é um zumbi no tempo entre o processo de saída e o pai pegando o status de saída. Se um zumbi fica por um longo tempo, isso indica uma falha no pai daquele zumbi. Se o pai morre, o processo é herdado pelo processo número 1 (o processo init). O init deve sempre estar lidando com zumbis muito rapidamente. Se você vir zumbis com o pai pid 1, isso indicaria que algo está errado no init ou no kernel.

    
por 01.05.2014 / 17:49