我想做一个crontab条目,除了每个月的第一、第二和第三天外,每个工作日都会运行。我现在拥有的是:
45 8,12,16 4-31 * 1-5 my_program我认为这有以下含义:
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:
% rpm -qf `which crontab`
cronie-1.5.0-3.fc23.x86_64
% rpm -q fedora-release
fedora-release-23-1.noarch发布于 2017-10-02 10:45:40
来自crontab手册:
注意:命令执行的日期可以由两个字段指定--月日和周日。如果这两个字段都受到限制(即,are *),则当其中一个字段与当前时间匹配时,将运行该命令。例如,30 4 1,15 *5‘将导致一个命令在每个月的1和15日凌晨4:30运行,加上每个星期五。但是,可以通过向命令添加测试(参见下面的示例CRON文件中的最后一个示例)来实现所需的结果。
上述示例如下所示:
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"因此,在您的情况下,它将是这样的(没有测试):
45 8,12,16 4-31 * * test $(date +\%u) -lt 6 && my_programhttps://stackoverflow.com/questions/46522946
复制相似问题