在特定时间间隔内停止 Cron 作业

在特定时间间隔内停止 Cron 作业

我有一个 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

您需要根据自己的具体情况制定具体细节。我现在将其作为一个想法提出来供您思考。

相关内容