Cron-每个星期天,除非是';It’这是一个月的第一天

Cron-每个星期天,除非是';It’这是一个月的第一天,cron,Cron,我有三个级别的备份: 完整-在每月的第一天运行 每周-每周日跑步 每日-每隔一天跑步一次 我想这样设置它们: 0 0 1 * * - full 0 0 2-31 * 1 - weekly 0 0 2-31 * 0,2,3,4,5,6 - daily 但事实证明,设置月日和周日是一种非此即彼的关系,而不是and,因此每周和每日备份实际上每天都在运行,而不是在每月第一天以外的每个星期一运行,也不是在每月第一天以外的星期一运行 cron可以按照我想要的方式设置吗 谢谢,您可以在运行的命令中检查今

我有三个级别的备份:

  • 完整-在每月的第一天运行
  • 每周-每周日跑步
  • 每日-每隔一天跑步一次
我想这样设置它们:

0 0 1 * * - full
0 0 2-31 * 1 - weekly
0 0 2-31 * 0,2,3,4,5,6 - daily
但事实证明,设置月日和周日是一种非此即彼的关系,而不是and,因此每周和每日备份实际上每天都在运行,而不是在每月第一天以外的每个星期一运行,也不是在每月第一天以外的星期一运行

cron可以按照我想要的方式设置吗


谢谢,

您可以在运行的命令中检查今天是否是本月的第一天,例如
[[[$(日期'+\%d')!='01']]&&backupcommand
。(转义
%
很重要!)请注意,这要求您的
SHELL必须是Bash。或者,您可以使用
[!“$(日期'+\%d')”='01']&&backupcommand
@BenjaminW.,也许最好将数字与
-ne
进行比较,而不是与
进行比较=我最后使用了@BenjaminW建议的解决方法。@RomeoNinov然后我必须注意解释为八进制,因为前导零。或者,格式化指令可以是
%-d
,以删除前导零,然后您可以使用
-ne
,但我不认为这有什么区别。@Romeninov但是
%d
是一个月中的一天,用零填充。如果您对此有强烈的感觉,请使用
-gt
发布答案。