【问题标题】:special cron expression: how to make an exception?特殊的 cron 表达式:如何产生异常?
【发布时间】:2014-07-02 01:49:46
【问题描述】:

我制作了一个 cron 来在每个星期二凌晨 3:50 执行一项任务 - 除了与每月第一天重合的星期二:

50 3 * * 2 MyCommand

但我不知道如何将异常转换为 cron 语法,有什么提示吗?

【问题讨论】:

  • 我认为你需要在你的命令周围放置一个包装脚本,如果该月的第一天是拒绝运行的。
  • 我就是这么想的 :)

标签: linux cron


【解决方案1】:

您可以在脚本中添加条件吗?我会那样做。在您的 cron 中,您可以评论它不会在您的脚本指示的第一个运行

例如,在 bash 中你可以这样做:

#!/bin/bash

dayofmonth=`date +"%d"`
if [ $dayofmonth == "01" ];
then
# do not run, exit
exit
fi

# otherwise go on

echo "it is not the first"

所以你的 cron 会是

30 5 * * 2 /path/to/script # comment: script conditional in place to not run on the 1st

【讨论】:

  • 谢谢,我认为这应该可以解决我的问题,即使以其他方式
  • 是的,我认为你必须这样做。希望您不只是在 cron 中执行此操作。根据我对 cron 的了解,您将无法执行这样的异常。所以你需要在脚本中做例外。祝你好运!
【解决方案2】:

您可以将“日期”字段设置为 2-31 的范围,有效地排除第一天。应该这样做:

50 3 2-31 * 2 MyCommand

【讨论】:

  • 谢谢,我认为这不应该在每个星期二执行我的命令,而是在 (2-31) 和每个星期二之间的所有日子里执行,是吗?
  • 我认为 @user3196353 是正确的,因为上述答案将在每个月的 2 日至 31 日执行,如果恰好是星期二,则在 1 日执行。 crontab 的手册页说“最后,如果将月份或月份中的某一天指定为元素或列表,并且星期几也指定为元素或列表,则任何匹配月份和月份的日期,或星期几,应匹配。”
  • 谢谢,对不起,你们是对的,这个答案可能应该相应地被否决。
猜你喜欢
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 2017-08-01
相关资源
最近更新 更多