我有一个 cron 作业,全天每五分钟运行一次。
我想停止这个 cron 作业在周日下午 4 点到 5 点之间运行 - 它应该在这个时间之后重新启动。
我该如何编写这个脚本?
答案1
将其粘贴到你的 cron 作业脚本的顶部(根据需要进行修改)...
if [[ $(date +%u) -eq 7 && $(date +%H) -eq 16 ]]; then
echo "I don't run at this time"
exit 1
fi
echo "Something to do at other times here..."
“date” 的第一个实例返回星期几(星期日 = 7),第二个实例返回小时(16 = 下午 4:00 - 下午 4:59)。如果脚本发现当前是第 7 天、第 16 个小时,它将退出。
答案2
关于什么:
*/5 * * * * job.sh > /dev/null
00 16 * * 0 touch /tmp/stopJob.lck
00 17 * * 0 rm -f /tmp/stopJob.lck
job.sh
如果文件存在则退出:
if [ -f /tmp/stopJob.lck ]
then
exit
fi
答案3
如果你的 cron 作业运行一个脚本,你可能不需要做太多事情,你可以让它检查缺席设置为在周日下午 4 点到 5 点之间运行的流程
例如,我每 15 分钟使用一个 cron 任务来调用一次,rsync
但是仅当rsync
尚未运行。
它使用pidof
命令来检查特定的进程 ID 是否正在运行:
PID=$(pidof rsync)
if [ -z $PID ]
then
rsync -avz ....
fi
您需要根据自己的具体情况制定具体细节。我现在将其作为一个想法提出来供您思考。