我想在每个月的最后一个星期六安排我的脚本。我想出了以下内容:
45 23 22-28 * * test $(date +\%u) -eq 6 && echo "4th Saturday" && sh /folder/script.sh
Run Code Online (Sandbox Code Playgroud)
这是正确的还是我需要更改它?我现在无法测试它,因为它只会在上周六被调用。请指教。
我每个月的最后一个星期天都有以下内容,但我不太明白。第一部分给出了星期天的 24,在 -eq 之后给出了 7,我不知道它是什么意思:
00 17 * * 0 [ $(cal -s | tail -2 | awk '{print $1}') -eq $(date | awk '{print $3}') ] && /folder/script.sh
Run Code Online (Sandbox Code Playgroud)
我可以修改上述内容以获得上周六吗?
在罗密欧的帮助下,我得到了以下答案:
00 17 * * 6 [ $(cal -s | tail -2 | awk '{print $7}') -eq $(date | awk '{print $3}') ] && /folder/script.sh
Run Code Online (Sandbox Code Playgroud)
Rom*_*nov 11
你的逻辑行不通。月份的最后一个星期六可以是 29 或 30 或 31。因此,进行检查的最佳方法是在每个星期六运行它并检查脚本,如果这是在一个月的最后 7 天:
45 23 * * 6 sh /folder/script.sh
Run Code Online (Sandbox Code Playgroud)
并添加您的脚本(这里假设 GNU 实现date
)类似于:
if [ "$(date -d "+7 day" +%m)" -eq "$(date +%m)" ]
then echo "This is not one of last 7 days in month.";exit
fi
<rest of your script>
Run Code Online (Sandbox Code Playgroud)
关于您在 cron 中的行,您应该编辑它以这样开始:
00 17 * * 6
Run Code Online (Sandbox Code Playgroud)
(6 表示星期六,0 或 7 表示星期日)
归档时间: |
|
查看次数: |
1345 次 |
最近记录: |