我看过this问题表明 CRON 计划的 wday
和 mday
字段之间的关系是 OR 关系。比方说,我想为每个星期五(13 号)安排一些事情。
CRON 不是预期的结果
0 0 13 * 5
会给我每个月的所有星期五,以及每个月的每个 13 日。
有什么方法可以避免这种行为并指定 AND 关系吗? (似乎提到使用 AND 关系的旧版本,但我更愿意使用能够同时执行这两种操作的单一工具)
最佳答案
我想,您不必指定 wday (Friday=5),而只需指定 13 日为星期五的月份;因此,对于 2019 年:
0 0 13 9,12 * : do stuff, but avoid black cats
或者,永远更优雅,创建一个小脚本:
$> cat /home/me/bin/test_friday_13
#!/bin/bash
if [ "$(date +'%A %d')" != "Friday 13" ]
then
exit 1
else
: do stuff, but avoid black cats
exit 0
fi
并制作 crontab 条目:
0 0 13 * * /home/me/bin/test_friday_13
脚本方法还有一个额外的好处,就是您可以从命令行运行它。 (注意:不要忘记更改脚本中的工作日名称以反射(reflect)您的环境。)
关于CRON 与 mday 和 wday 之间的 AND 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56653256/