【问题标题】:My cron jobs runs several times我的 cron 作业运行了好几次
【发布时间】:2015-01-30 19:06:49
【问题描述】:

在我的服务器上,我有三个 cron 作业:

通过输入 crontab -e 我得到以下信息:

0 */24 * * * wget -qO /dev/null http://www.example.com/Users/mailNotify?token=1234 >> /var/log/cronLog.txt
0 */23 * * * sh /var/www/backup/backupScript
0 */23 * * * wget -qO /dev/null http://www.example.com/Users/off_score?token=1234 >> /var/log/cronLog.txt

这些 cronjobs 运行两次:

每晚 00:00 和 01:00。

有趣的是,它在上述每个小时都运行所有三个作业。

谁能告诉我在创建这些时我做错了什么?

【问题讨论】:

  • 您希望它们在 23.00 和 0.00 运行一次?
  • 我希望它们仅在 00.00 或任何其他定义的时间运行。但问题是它在两个小时都运行所有命令

标签: linux cron


【解决方案1】:

要让您的 cronjobs 在特定时间运行一次,您不应该使用 */,因为这会使您的 cronjobs 每 23 小时运行一次,这会导致在 1 运行,然后在 23 小时后再次运行,在0,因为 cron 正在计算一天中每 23 小时运行一次的时间。

要像您评论的那样在午夜运行所有这些,请像这样使用 cron:

0 0 * * * wget -qO /dev/null http://www.example.com/Users/mailNotify?token=1234 >> /var/log/cronLog.txt
0 0 * * * sh /var/www/backup/backupScript
0 0 * * * wget -qO /dev/null http://www.example.com/Users/off_score?token=1234 >> /var/log/cronLog.txt

Cron 定义:

# * * * * *  command to execute
 # │ │ │ │ │
 # │ │ │ │ │
 # │ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
 # │ │ │ └────────── month (1 - 12)
 # │ │ └─────────────── day of month (1 - 31)
 # │ └──────────────────── hour (0 - 23)
 # └───────────────────────── min (0 - 59)

您是在告诉 cron 每天在命令中使用第三个 * 运行。

【讨论】:

  • 这样每天都跑吗?
  • 每天 0.00,是的。要让其中一个或多个在 23.00(晚上 11 点)运行,只需将第二个零更改为 23。@MarcRasmussen
猜你喜欢
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 2020-12-19
  • 2013-11-18
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多