【问题标题】:Cron executing wrongcron 执行错误
【发布时间】:2015-05-02 18:25:14
【问题描述】:

在 crontab 上设置了下面的行。但不是验证当天。当我删除星期几时正确执行。有什么建议吗?

# uname -a
Linux server 2.6.32-358.14.1.el6.x86_64 #1 SMP Tue Jul 16 23:51:20 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/issue
Red Hat Enterprise Linux Server release 6.4 (Santiago)
Kernel \r on an \m

# date
Mon Mar  2 08:50:19 BRT 2015

# crontab -l
* * 1 3 1 echo "teste"

# tail -f /var/log/cron
Mar  2 08:38:01 server CROND[10509]: (root) CMD (echo "teste")

【问题讨论】:

  • 添加一些有意义的解释。目前理解你的问题的唯一方法是阅读代码,而我相信你可以自己解释。您也可以阅读Tips for debugging cron issues from crontab wiki
  • 谢谢。在这个链接中回答了我的问题,当说:“......有一个例外:如果“一个月中的一天”和“一周中的一天”都受到限制(不是“*”),那么“一个月中的一天”字段(3) “星期几”字段 (5) 必须与当前日期匹配。..."
  • 如何设置 cron 仅运行:3 月 2 日星期一
  • 如果你想说Monday 2 March,你可以说* * 2 3 *。但这项工作在每年 3 月 2 日生效,明年也是如此,等等。
  • 但我只想要星期一。例如明年 3 月 2 日是星期四,不能执行。

标签: linux cron crontab cron-task crontrigger


【解决方案1】:

如果无法在 crontab 中定义时间间隔,您可以在脚本本身中使用日期/时间检查。您可以强制 crontab 在每个 3 月 2 日运行脚本,并检查脚本内部是否真的是星期一。如果没有,您可以退出脚本。

例如。

[[ $( date +%u ) -ne 1 ]] && exit

如果当天不是星期一,则退出。

【讨论】:

    【解决方案2】:

    About crontab "...有一个例外:如果 "day of month" 和 "day of week" 都受到限制(不是 "*"),那么 "day of month" 字段 (3) “星期几”字段 (5) 必须与当前日期匹配。..."

    Run a cron job on the first Monday of every month?How to run a cron job on the first weekday of the month也有类似的问题

    所以,在 crontab 集合中:

    * * 1 3 * [ "$(date '+\%a')" == "Sun" ] && /bin/mkdir /tmp/cronsilvioteste

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多