У меня есть cronjob, который запускается каждые 10 минут. Работающий скрипт иногда обнаруживает проблему и запускает службу (с помощью /sbin/service XXX start
), которая в конечном итоге запускает процесс Java.
Если сценарии запускают службу java, мой начальный сценарий cronjob будет работать вечно:
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
Я хочу, чтобы эти сценарии были удалены из списка запущенных процессов (или вообще не появляться после запуска службы)
Если я убью эти сценарии, произойдут следующие 2 события:
-> Мой сервис java
процесс не убит (что хорошо)
-> Теперь я получаю в списке процессов следующее:
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>
Итак, как я могу убедиться, что процессы cron всегда исчезают после того, как мой сервис был (пере) запущен?
PS: этот сценарий cron_script.sh
является корнем стека вызовов 5 процессов, пока не доберется до службы java
и все они останутся работающими.