Mate um processo que continue reiniciando

13

E se 'kill -9' não funcionar? ou Como matar um script que inicia novos processos ? não ajuda em nada.

Eu tenho um script python que é iniciado automaticamente com outro id de processo usando a mesma porta quando morto usando sudo kill -9 <pid> .

$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  13242 ubuntu    3u  IPv4  64592      0t0  TCP localhost:3002 (LISTEN)
$ sudo kill -9 13242
$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  16106 ubuntu    3u  IPv4  74792      0t0  TCP localhost:3002 (LISTEN)
$ sudo kill 16106
$ lsof -i :3002
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  16294 ubuntu    3u  IPv4  75677      0t0  TCP localhost:3002 (LISTEN)

Não é um processo de zumbis.

$ ps -Al

4 S     0 16289     1  0  80   0 - 12901 poll_s ?        00:00:00 sudo
4 S  1000 16293 16289  0  80   0 -  1100 wait   ?        00:00:00 sh
0 S  1000 16294 16293  0  80   0 - 34632 poll_s ?        00:00:00 python

Eu até tentei sudo pkill -f <processname> sem sorte. Não quer morrer.

Atualização:

O processo pai é sh cujo pai é sudo , conforme mencionado na tabela acima. Não tenho certeza se é seguro matá-los abruptamente. Também é um servidor ubuntu compartilhado.

    
por Lakshminarayanan Guptha 29.09.2014 / 14:40

2 respostas

23

Inicia automaticamente com outro ID de processo significa que é um processo diferente. Assim, há um processo pai, que monitora seus filhos, e se um deles morre, ele é ressurgido pelo pai. Se você quiser interromper o serviço completamente, descubra como parar o processo pai. Matá-lo com SIGKILL é, obviamente, uma das opções, mas provavelmente não é A Direita TM , já que o monitor de serviço pode precisar fazer alguma limpeza para desligar corretamente.

Para encontrar o processo do monitor, talvez seja necessário inspecionar toda a lista de processos, já que os ouvintes reais podem dissociar-se de seus pais (geralmente pelo fork() + setsid() combo). Nesse caso, considero a saída de ps faux (pelo menos de procps , pode variar para outras implementações) - ela lista todos os processos em uma árvore hierárquica. A menos que tenha havido um quebra de PID (veja também wikipedia ), o PID do monitor deve ser menor que o PID de qualquer um dos ouvintes.

    
por 29.09.2014 / 15:02
4

Se você conhece a porta de escuta do processo, pode usar fuser com -k flag.

Algo como

fuser -k 3002/tcp
    
por 29.09.2014 / 15:20

Tags