我对 cron 相当陌生,我试图找到一种方法来运行一周中的每一天的工作,除了每个月的第一天和每周的第一天。
这可能听起来有点奇怪,但上下文是这是用于备份任务的。我想每天备份,但也希望将一些备份保留更长的时间,因此每周备份一次,每月备份一次。
我想为日常工作设置一个 cron 任务,但我正在努力了解如果在每周或每月备份也将运行的一天,如何有效地不运行日常任务。我认为我可以通过为每月的每一天添加一个单独的 cron 任务来实现这一点,但这感觉不对,因为它是很多单独的任务。
在 cron 中是否有更好的方法来实现这一目标?
我会用一周中的某天限制来安排工作,然后在实际工作前加上date
“每月某天”的测试。使用您自己的小时和分钟字段值。“月份中的某一天”字段是*
,表示在该月的任何一天或所有日子运行。“月份”字段也已打开。“星期几”字段仅限于星期一到星期六,跳过一周的第一天(假设您将星期日算为一周的第一天)。如果星期一是一周的第一天,请改用0,2-6
“星期几”值。
(minute) (hour) * * 1-6 [ $(date +\\%e) -ne 1 ] && actual-job\n
Run Code Online (Sandbox Code Playgroud)\n\n最简单的方法(限制月份和星期几字段)不起作用,因为 中的注释(man 5 crontab
我用粗体强调):
\n\n注意:命令执行的日期可以在以下两个字段中指定:\xe2\x80\x94\'day of\n Month\' 和 \'day of week\'。如果两个字段都受到限制(即不包含“*”字符),\n 当任一字段与当前时间匹配时,将运行该命令。例如,
\n