每天 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 两次的主要内容,如果未能解决你的问题,请参考以下文章