有没有一种方法可以在crontab中指定在工作日的某个开始时间和某个结束时间之间每5分钟运行一次的作业?
更新 我认为与我的开始和结束时间不是整点钟有关。因此,在小时栏中指定9-5是不够的。我要9:30-17:30
有没有一种方法可以在crontab中指定在工作日的某个开始时间和某个结束时间之间每5分钟运行一次的作业?
更新 我认为与我的开始和结束时间不是整点钟有关。因此,在小时栏中指定9-5是不够的。我要9:30-17:30
Answers:
您必须分段进行:
30-59/5 9 * * * script.sh
*/5 10-16 * * * script.sh
0-30/5 17 * * * script.sh
如果Ignacio Vazquez-Abrams的答案对您没有真正的帮助,例如因为脚本需要大量参数或调用条件不平凡(或没有时间限制),那么另一种方法是使简单包装器脚本,定期调用包装器脚本,并让包装器脚本检查当前时间并调用主脚本。
例如:
#/bin/bash
# Check to see if we should run the script now.
HOUR=$(date +%H)
MINUTE=$(date +%M)
if test $HOUR -lt 9; then exit 0; fi
if test $HOUR -eq 9 -a $MINUTE -lt 30; then exit 0; fi
if test $HOUR -eq 17 -a $MINUTE -gt 30; then exit 0; fi
if test $HOUR -gt 17; then exit 0; fi
# All checks passed; we should run the script now.
exec script.sh ... long list of parameters ...
这使得编码执行标准比cron的语法容易实现的编码复杂得多,而定期调用外壳程序和单独的脚本所需的开销却相对较小。