Eu tenho um cronjob que é executado a cada 10 minutos. O script que está sendo executado detecta, às vezes, um problema e inicia um serviço (usando /sbin/service XXX start
) que, por fim, inicia um processo java.
Caso os scripts consigam iniciar o serviço java, meu script de cronjob inicial continuará funcionando para sempre:
root 8003 0.0 0.0 106100 212 ? Ss 00:40 0:00 /bin/bash /root/scripts/cron_script.sh
root 10295 0.0 0.0 106100 40 ? Ss Oct25 0:00 /bin/bash /root/scripts/cron_script.sh
root 11135 0.0 0.0 106100 208 ? Ss Oct26 0:00 /bin/bash /root/scripts/cron_script.sh
root 22787 0.0 0.0 0 0 ? Zs Oct26 0:00 /bin/bash /root/scripts/cron_script.sh
root 29956 0.0 0.0 106100 208 ? Ss Oct25 0:00 /bin/bash /root/scripts/cron_script.sh
O que eu quero é que esses scripts saiam da lista de processos em execução (ou não apareçam após o serviço ter sido iniciado)
Se eu matar esses scripts, as seguintes duas coisas acontecem:
- > Meu serviço java
process não está morto (o que é bom)
- > Eu entro agora na lista de processos o seguinte:
root 8003 0.0 0.0 0 0 ? Zs 00:40 0:00 [cron_script] <defunct>
root 10295 0.0 0.0 0 0 ? Zs Oct25 0:00 [cron_script] <defunct>
root 11135 0.0 0.0 0 0 ? Zs Oct26 0:00 [cron_script] <defunct>
root 22787 0.0 0.0 0 0 ? Zs Oct26 0:00 [cron_script] <defunct>
root 29956 0.0 0.0 0 0 ? Zs Oct25 0:00 [cron_script] <defunct>
Então, como posso ter certeza de que os processos cron sempre acabaram depois que meu serviço foi (re) iniciado?
PS: esse script cron_script.sh
é a raiz de uma pilha de chamadas de processo de 5 até chegar ao serviço java
e todas continuam em execução.