processos defuntos e seus processos pai

0

Me deparei com essa postagem do SO:

link

"Você matou o processo, mas um processo morto não desaparece da tabela de processos até que seu processo pai execute uma tarefa chamada" reaping "(essencialmente chamando wait (3) para que o processo leia seu status de saída). Processos inativos que não foram coletados são chamados de "processos zumbis".

Aqui está o meu processo extinto:

 ps aux | grep ruby
1000     11958 16.3  0.0      0     0 pts/3    Z    Jul11 1065:28 [ruby] <defunct>

Isso é o que deveria fazer:

RAILS_ENV=production bundle exec ruby lib/daemons/db_service_ctl start% 

Basicamente, ele executa o processo de daemons do Rails. Eu queria reiniciá-lo, então tentei matá-lo, mas ele se recusou a morrer, e agora eu tenho um processo extinto.

Aqui está o processo pai:

ps -f 11958            
UID        PID  PPID  C STIME TTY      STAT   TIME CMD
1000     11958 11957 16 Jul11 pts/3    Z    1065:28 [ruby] <defunct>

O processo pai é 11957. O cmdline proc se parece com isto:

 /proc/11957 $ cat cmdline
/bin/sh./script/db_service.sh%   

Parece o mesmo script de shell que eu executei como o processo de daemons!

Então, como isso pode ser o processo pai também?

    
por JohnMerlino 16.07.2013 / 05:29

1 resposta

0

Simplesmente - o script db.service.sh que é o pai do seu processo ruby iniciou um executável (com o PID 11958). Quando você inicia um programa a partir de um script, é um novo processo, com o pai sendo o script que o chamou. Considere este script:

#!/bin/bash

cat

Quando você começa como test.sh , você verá que o bash é o pai, e o gato é o filho:

xxx   4087 10976  0 08:29 pts/2    00:00:00 /bin/bash ./test.sh
xxx   4088  4087  0 08:29 pts/2    00:00:00 cat
    
por January 16.07.2013 / 06:31