crontable 或条件

crontable 或条件

Crontable 参数似乎起到了“ands”条件的作用。因此示例

0 9-5 * * 1-5

当满足条件“分钟为零且小时介于 9 点和 5 点之间且日期介于星期一和星期五之间”时运行。

我想要一个“或”函数,这样我就可以表示“周一到周五运行或每月 8 日运行”。有这样的函数吗?

我知道您可以添加两个条目,但是如果条目太多,就会增加一些容易忘记的内容。

答案1

我本来想说:使用,(逗号)。来自man 5 crontab

Lists are allowed.
A list is a set of numbers  (or  ranges)  separated  by  commas.
Examples:  "1,2,5,9","0-4,8-12".

但您的情况稍微复杂一些,您可以利用此功能:

Note: The day of  a command's execution can be specified by two fields day
of month, and day of week. If both fields are restricted (i.e., aren't *),
the command will be run when either  field matches the current time.
For example, "30  4  1,15  *  5" would cause a command to be run at 4:30 am
on the 1st and 15th of each month, plus every Friday.

因此,对于你的情况,你可以这样写0 9-5 8 * 1-5。这样就会在每月 8 号以及周一到周五每天运行你的命令。

另一种解决方案是使用testman bash,部分条件表达式,和man date):

# Run on every second Saturday of the month:
   0 4 8-14 * *    test $(date +%u) -eq 6 && echo "2nd Saturday"

相关内容