假设我这样做:
0 0 0 * * somejob
这会在设定的日期运行吗?如果我的计算机在该日期没有运行,它会跳过该周吗?
假设我现在设置了这个任务。然后我的电脑会在 5 天后关机一整天。
基本上我需要每周运行一些程序,但我的电脑可能不会 24/7 全天候运行。
答案1
是的,cron
如果计算机当时处于打开状态,则只会运行在特定时间安排的作业。它的工作方式是,每分钟检查所有计划的 cron 作业,看它们的时间字段是否与当前分钟匹配,如果匹配,则运行该作业。如果不匹配,则跳过该作业。没有“保存”作业执行以供以后执行的概念。
针对您的情况,您可以做的是使用标记文件来指示上次运行作业的时间。创建一个如下所示的小脚本或程序(这是伪 Bash 语法):
if (marker file was last modified > 1 week ago); then
run the job
touch marker file
fi
您可以将脚本设置为 cron 作业,每天、每小时甚至每分钟运行一次 - 确保它在您打开计算机的时间内每周至少运行一次。
答案2
阿纳克隆很可能是你正在寻找的:
Anacron 是一个周期性命令调度程序。它以天为单位的间隔执行命令。与 cron 不同,它不假设系统持续运行。