我应该在 crontab 中使用 1,15 还是 */15 每 15 天运行一次命令?

我应该在 crontab 中使用 1,15 还是 */15 每 15 天运行一次命令?

据我所知 crontab 有这些字段,从左到右开始。

1   minutes 0-59
2   hours 0-23
3   days of month 0-31
4   month 1-12
5   day of the week 0-6
6   command

我想每 15 天在 15:30 运行 foo 命令 这是正确的,因为运行命令 1 和 15 的月份有 30 天(31 天),所以每 15 天运行一次

30 15 1,15 * * /sbin/foo -a 1> /dev/null

这个语法也正确吗?

30 15 */15 * * /sbin/foo -a 1> /dev/null

系统是 Slackware Linux,使用 Dillon Cron

答案1

这个语法30 15 */15 * *是正确的,但它与 this 的作用不同30 15 1,15 * *

后者将在本月1st15th每月执行命令,因为它为“每月的日期”字段提供了固定的逗号分隔值。

定义/的步骤,这意味着将从 开始每天*/15执行,这意味着:,(对于所有月份)以及(对于任何有 31 天的月份)。1511st16th31th


如前所述man crontab(5),步长值可以与范围结合使用。因此,如果您想使用/语法获得相同的结果,您可以这样做:30 15 1-15/14 * *这意味着30 15 1,15 * *.

另一个例子,如果您想每 15 天运行一次,但在每月 5 日和 20 日运行:5-20/15。当然,对于这种情况,写成可读性更高5,20。但是将范围与步骤结合起来,可以定义范围执行的开始和结束。

对于本月的第 1、3、5、7 等天:*/2

对于本月的第 2、4、6、8 等天:2-30/2

对于 Minutes( 0-59) 和 Hours( 0-23),第一个有效值0如下:0 */2 * * *表示 at 00:0002:0004:00

相关内容