每天 00h 和 13:30 执行 crontab 两次

Posted

技术标签:

【中文标题】每天 00h 和 13:30 执行 crontab 两次【英文标题】:execute crontab twice daily at 00h and 13:30 【发布时间】:2012-12-09 05:39:03 【问题描述】:

我想在每天 00:00 和 13:30 执行两次脚本,所以我写:

0,30 0,13 * * *

这对我来说似乎是错误的,因为像这样,脚本将在 00:00 、 00:30 、 13:00 和 13:30 触发。有什么想法吗?

【问题讨论】:

【参考方案1】:

你不能在单行上使用 cron 来做到这一点。 您必须像这样创建 2 行单独的行:

# Will run "YourCommand" at 00:00 every day of every months
#Min   Hours   D of the M       Month   D of the Week   Command
0      0       *                *       *               YourCommand

# Will run "YourCommand" at 13:30 every day of every months
30     13      *                *       *               YourCommand

或者作为单行,您可以每 x 小时运行一次命令,如下所示:

# Will run "YourCommand" every 12 hours
0   */12   *   *   *   YourCommand

【讨论】:

【参考方案2】:

试试这个,

0 10 9/12 ? * *

从每天早上 9 点开始,每 12 小时一次,每秒钟 :00 分 10 分

【讨论】:

【参考方案3】:
Try this out: 0 6,18 * * *

它将在 6 小时和 18 小时后的第 0 分钟运行

或者你可以在cronguru试试看

【讨论】:

【参考方案4】:

你不能在一个条目中做你想做的事,因为两分钟的定义将适用于两个小时的定义(正如你所确定的那样)。

解决方案是(不幸的是)使用两个 cron 条目。 00:00 一个,13:30 一个。

另一种选择是也许在 00:00 执行一个脚本。该脚本将执行您的原始脚本,然后等待 13.5 小时,然后再次执行该脚本。通过一个简单的 sleep 命令很容易做到,但我认为它不直观,而且我不确定cron 如何管理如此长时间运行的进程(如果您编辑crontab 会发生什么情况- 它是否会杀死一个衍生的工作等)

【讨论】:

一开始我也想你,但是我说写两个cron条目很愚蠢 这可能很愚蠢,但它可能 a) 可维护 b) 不可避免 @wassim:cron 旨在用于良好的重复间隔,而不是一天中的任意时间。使用两个 cron 条目并继续。 @Ankush 你能具体说明一下吗? 只有一个 cronjob 的最佳方法是检查脚本中的分钟(或完整的小时和分钟)。所以只有当你正在寻找的条件是好的时,你才会执行真正的工作。目前我没有看到其他解决方案。【参考方案5】:

试试...

00,30 00,13 * * * [ `date +%H%M` == 1330 ] || [ `date +%H%M` == 0000 ] && logger "its time"

【讨论】:

太复杂了,前面的答案比较简单 @Mehdi 尝试用以前的答案实施不同的分钟 检查 Ankush 的回答。【参考方案6】:

30 0,13 * * * somecommand.sh

这只是一个示例,但您会看到这是一个 cron 条目,它将在上午 0:30 和下午 1:30 运行(军事时间中的 13 是 1)。只需用逗号分隔小时数,或用逗号分隔 cron 的任何部分。

【讨论】:

加一表示“军事时间”,不知道 24 小时格式的名称。 OP 说“我想在每天 00:00 和 13:30 执行两次脚本”。这个答案不满足 00:00。【参考方案7】:

试试这个-:00 01,13 * * *

它将在凌晨 1 点和下午 1 点运行

【讨论】:

这肯定不是 OP 想要的 - '每天在 00h 和 13:30 执行 crontab 两次'。造成问题的是分钟和小时的差异 我实际上认为这是一个很好的解决方法。对于很多 cron 用例来说,将指定时间更改 @BrianAgnew 你在评论中听起来很苦涩。只是说。此外,评分反馈表明,即使 OP 对这个答案不满意,我们显然正在寻找这个确切的东西。其实超过70%,所以人多。我认为这是一个更大的好处,你不同意吗? 这不是“苦”,它直接解决了声明/要求的要求以及这个答案是否解决了它。

以上是关于每天 00h 和 13:30 执行 crontab 两次的主要内容,如果未能解决你的问题,请参考以下文章

如何让crontab 按秒执行

crontab 如何立即执行

每天而不是每月执行的 crontab 作业

每天一个Linux命令—— crontab

crontab怎样每隔5分钟执行一次脚本

crontab 和 2>&1的含义