首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >crontab (cronie),运行一个月中的某些日子

crontab (cronie),运行一个月中的某些日子
EN

Stack Overflow用户
提问于 2017-10-02 09:32:09
回答 1查看 3.2K关注 0票数 2

我想做一个crontab条目,除了每个月的第一、第二和第三天外,每个工作日都会运行。我现在拥有的是:

代码语言:javascript
复制
45   8,12,16 4-31 * 1-5  my_program

我认为这有以下含义:

代码语言:javascript
复制
minutes:      45 past the hour
hours:        8, 12, and 16
day of month: 4th to 31st inclusive
month:        all
day of week:  Monday to Friday inclusive

这就是我在crontab(5)手册页面中看到的内容。然而,我可以看到,这项工作是在今天上午8时45分,星期一10月2日。我确信crontab文件加载正确( crontab -l显示了它);它最近没有被更改。date显示的系统日期和时间也是正确的。

我错过了什么,以确保我的cron工作只运行从第四个开始?我正在使用Fedora:

代码语言:javascript
复制
% rpm -qf `which crontab`
cronie-1.5.0-3.fc23.x86_64
% rpm -q fedora-release
fedora-release-23-1.noarch
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-02 10:45:40

来自crontab手册:

注意:命令执行的日期可以由两个字段指定--月日和周日。如果这两个字段都受到限制(即,are *),则当其中一个字段与当前时间匹配时,将运行该命令。例如,30 4 1,15 *5‘将导致一个命令在每个月的1和15日凌晨4:30运行,加上每个星期五。但是,可以通过向命令添加测试(参见下面的示例CRON文件中的最后一个示例)来实现所需的结果。

上述示例如下所示:

代码语言:javascript
复制
0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

因此,在您的情况下,它将是这样的(没有测试):

代码语言:javascript
复制
45   8,12,16 4-31 * *  test $(date +\%u) -lt 6 && my_program
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46522946

复制
相关文章

相似问题

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