我需要在每个月的最后一个星期一启动一些 cron 脚本。
我想知道组合范围是否可以完成这项工作,例如:
8 04 19-26 * 2 $HOME/bin/mailstub
Run Code Online (Sandbox Code Playgroud)
我希望我做对了,我的 cron 工作只会在每个月的 19 到 26 周之间运行一次。
很高兴听到人们的评论,
我使用的是 CentOS 5.6 - 所以在某些地方(例如维基百科)中提到的 L 构造在我的系统上不起作用。
提前致谢,
盎司
小智 10
您的 cron 作业将在星期二(第 5 个字段,星期几,0 或 7 是星期日)运行,而不总是在该月的最后一个星期二。最好使用:
8 04 * * 1 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && $HOME/bin/mailstub
Run Code Online (Sandbox Code Playgroud)
这将检查今天的月份是否不等于 7 天后的月份。如果不相等,则为该月的最后一个星期一。
小智 3
设置为每天多次。你要:
0 8 04 19-26 * * 周一 $HOME/bin/mailstub
它将在 19 日至 26 日之间的任何一天(每年任何月份的星期一)的 8:04:00 开始。
但是,如果是 19 日星期一,则为 26 日星期一。因此,您希望在 19 日至 25 日期间购买
0 8 04 19-25 * * 周一 $HOME/bin/mailstub
因此,这应该在每月的星期一发生一次。但是,不能保证(或可能)是最后一个星期一。如果您需要将其放在最后,并且 L 语法不起作用,则需要将逻辑编程到被调用的脚本中。这很容易用 python 完成,但超出了这个问题的范围。