首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mday与wday的关系

mday与wday的关系
EN

Stack Overflow用户
提问于 2019-06-18 16:15:25
回答 2查看 530关注 0票数 3

我见过this问题,它表明CRON计划中的wday字段和mday字段之间的关系是OR关系。比如说,我想在每个星期五,13号,安排一些事情。

而不是预期的结果

代码语言:javascript
复制
0 0 13 * 5

会给我每个月的每个星期五,以及每个月的十三号。

是否有任何方法可以避免这种行为并指定一个和关系?(似乎有人提到了使用和关系的旧版本,但是我更愿意使用一个工具来实现这两种功能)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-12 00:56:02

我想,您不必指定wday (Friday=5),您只需指定第13号是星期五的月份;因此,对于2019年:

代码语言:javascript
复制
0 0 13 9,12 * : do stuff, but avoid black cats

或者,永远更优雅,创建一个小脚本:

代码语言:javascript
复制
$> 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条目:

代码语言:javascript
复制
0 0 13 * * /home/me/bin/test_friday_13

脚本方法有一个额外的好处,您可以从命令行运行它。(注意:不要忘记修改脚本中的工作日名称以反映您的环境。)

票数 3
EN

Stack Overflow用户

发布于 2019-07-12 04:03:20

不幸的是,克伦没有按照你想要的方式工作

您可以在url下面看到所有可用选项。

https://www.freeformatter.com/cron-expression-generator-quartz.html

所以,您可以做的是每13个月执行cron,但不要让命令在其Friday时运行。

代码语言:javascript
复制
0 0 0 13 * ? * mybatchjob.sh

mybatchjob.sh

代码语言:javascript
复制
if [ `date +'%A'` = "Friday" ]; then 
   echo "Yep its Friday"; 
else 
   echo "Not Friday"; 
fi

这将确保预定的程序只在周五和13日运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56653256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档