我见过this问题,它表明CRON计划中的wday字段和mday字段之间的关系是OR关系。比如说,我想在每个星期五,13号,安排一些事情。
而不是预期的结果
0 0 13 * 5会给我每个月的每个星期五,以及每个月的十三号。
是否有任何方法可以避免这种行为并指定一个和关系?(似乎有人提到了使用和关系的旧版本,但是我更愿意使用一个工具来实现这两种功能)。
发布于 2019-07-12 00:56:02
我想,您不必指定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脚本方法有一个额外的好处,您可以从命令行运行它。(注意:不要忘记修改脚本中的工作日名称以反映您的环境。)
发布于 2019-07-12 04:03:20
不幸的是,克伦没有按照你想要的方式工作
您可以在url下面看到所有可用选项。
https://www.freeformatter.com/cron-expression-generator-quartz.html
所以,您可以做的是每13个月执行cron,但不要让命令在其Friday时运行。
0 0 0 13 * ? * mybatchjob.shmybatchjob.sh
if [ `date +'%A'` = "Friday" ]; then
echo "Yep its Friday";
else
echo "Not Friday";
fi这将确保预定的程序只在周五和13日运行。
https://stackoverflow.com/questions/56653256
复制相似问题