У меня есть 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 и все они останутся работающими.

0