O que começou este processo?
Você pode usar ps
para encontrar o pai de cada processo, adicionando -l
( ps -axl
) para fornecer uma saída "longa" ou solicitando especificamente o ppid
:
ps -o ppid 2074
PPID
2072
Repita para 2072 para ver o que começou isso (provavelmente o CRON).
Por que dois processos?
o cron passa cada comando para um shell. De crontab (5) :
The entire command portion of the line, up to a newline or a "%" character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile.
Se você tiver a seguinte linha em crontab
:
0 * * * * python2.7 /opt/some/script.py
... então quando a entrada precisa ser executada (a cada hora, na hora), o cron executa o shell ( /bin/sh
) com os dois argumentos -c
e python2.7 /opt/some/script.py
.
O shell interpreta tudo o item depois de '-c' como um comando para executar. Ele encontra python2.7
de PATH
e o executa com o único argumento /opt/some/script.py
. Então, dependendo do seu shell (incluindo para qual /bin/sh
aponta), agora podem haver dois processos em execução:
-
/bin/sh -c python2.7 /opt/some/script.py
-
/usr/bin/python2.7 /opt/some/script.py
É por isso que ps
está mostrando 2 eibd
process e 2 python2.7
, apesar de haver apenas uma entrada para cada em seu crontab
.
Algumas camadas podem evitar um segundo processo como este. Veja Por que não há clone ou fork aparente no comando bash simples e como é feito?