我想把我的剧本安排在每个月的最后一个星期六。我想出了以下内容:
45 23 22-28 * * test $(date +\%u) -eq 6 && echo "4th Saturday" && sh /folder/script.sh
这是正确的还是我需要改变它?我现在无法测试它,因为它只会在上周六被调用。请指教。
我每个月的最后一个星期日都有以下内容,但我不能理解很多。第一部分给出 24 是星期天,在 -eq 之后给出 7 我不知道这是什么意思:
00 17 * * 0 [ $(cal -s | tail -2 | awk '{print $1}') -eq $(date | awk '{print $3}') ] && /folder/script.sh
我可以修改以上内容以获得上周六吗?
在罗密欧的帮助下,我得到了以下答案:
00 17 * * 6 [ $(cal -s | tail -2 | awk '{print $7}') -eq $(date | awk '{print $3}') ] && /folder/script.sh
你的逻辑是行不通的。月的上周六可以是 29 或 30 或 31。因此,进行检查的最佳方法是每周六运行一次,并在该月的最后 7 天签入脚本:
并在你的脚本中添加(这里假设 GNU 实现
date
)类似:关于您在 cron 中的行,您应该编辑它以像这样开始:
(6 表示周六,0 或 7 表示周日)
如果您碰巧使用了 Dillon Crontab(我认为它更好,包括更多功能,并且还提供 anacron),那么您可以选择:
希望您和其他人可以将此答案用于将来的咨询。
参考:
那这个呢:
我还没有尝试过,但Crontab Guru说这是可能的: