cronjob 脚本在完成任务后继续运行

cronjob 脚本在完成任务后继续运行

我有一个每 10 分钟运行一次的 cronjob。正在运行的脚本有时会检测到问题并启动服务(使用/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

我想要的是让这些脚本从正在运行的进程列表中消失(或者在服务启动后根本不出现)

如果我终止这些脚本,则会发生以下两件事:

-> 我的服务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并且它们都保持运行。

相关内容