#!/bin/bash while true; do crontab cron sleep 58m done
我运行这个守护进程使用这个命令…
setsid copy_cron.sh >/dev/null 2>&1 < /dev/null &
[1] 17025
但一旦运行,我无法find一个进程在ps -aux ..?
如何确保守护进程正在运行,或者如果需要的话就杀掉它?
只要做到这一点
~$ nohup copy_cron.sh &
用ps awx它会显示为正在运行
7168 pts/2 R 0:04 /bin/bash ./copy_cron.sh
像这样杀死它
~$ kill 7168
首先,你的脚本没有指定cron文件的绝对path,所以它依赖于在正确的目录中启动。
其次,在一个独立的自由运行循环中进行,而不是将其链接到生成文件的进程,这很容易出现。
第三,用户crontab每次都会被覆盖,导致任何可能被某人或别的东西添加的条目都会丢失。
没有致命的缺陷,但是违反了我的经验中最不让人惊讶的原则。
如果你的目标是保持crond运行,我会build议使用Monit 。
但是,在大多数情况下,cron守护程序不会停止运行,所以这可能不是必需的。
作为参考,我为我的系统提供了这种types的保护,我使用了一个如下所示的Monitconfiguration:
check process cron with pidfile "/var/run/crond.pid" start program = "/sbin/service crond start" stop program = "/sbin/service crond stop"
如果您的目标是按计划运行某些内容,请使用cron。