【问题标题】:How to make cron run every 2 hours and 11 minutes on ubuntu?如何让 cron 在 ubuntu 上每 2 小时 11 分钟运行一次?
【发布时间】:2012-07-29 12:00:40
【问题描述】:

我使用*/58 * * * * /usr/bin/php -f .... 每 58 分钟运行一次。但是我需要构建一个可以每 2 小时 11 分钟运行一次的 cron。有办法吗?

【问题讨论】:

  • 这很难做到。可以每小时做一次吗?
  • 这是一个奇怪的要求。这个要求从何而来?
  • @David 可能每 3 小时一次。
  • 三个小时:* */03 * * * /usr/bin/php -f ....
  • @David,我可以用 * */3 * * * 代替这个吗?

标签: ubuntu crontab


【解决方案1】:

您可以使用at。一旦在系统启动时以at -f /path/script.sh "now + 131minutes" 调用,它将在 131 分钟正常运行时间后启动 /path/script.sh。然后,在 /path/script.sh 中,插入另一个 at 调用。见http://linux.die.net/man/1/at

【讨论】:

    【解决方案2】:

    这个:

    */58 * * * * /usr/bin/php -f ....
    

    并非每 58 分钟运行一次。正如分钟字段中的 */5 在 5 的倍数后的每一分钟运行一样,*/58 在 58 的倍数后的每一分钟运行。换句话说,作业将在 00:00 运行, 00:58, 01:00, 01:58, 02:00, 02:58 等;两次运行之间的间隔在 58 分钟和 2 分钟之间交替。

    除了 cron 之外,可能还有其他工具可以满足您的需求。但是如果你想为此使用 cron,你可以有一个每分钟运行一次的作业:

     * * * * * your-wrapper-script /usr/bin/php -f ...
    

    并实现your-wrapper-script,使其仅在当前时间是 131 分钟(2 小时 11 分钟)的倍数时执行其参数。

    这个 Perl 脚本应该可以解决问题:

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    my $now = time;
    my $minutes = int($now/60);
    if ($minutes % 131 == 0) {
        system @ARGV; # NOTE: No error detection
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-10
      • 2013-06-24
      • 2016-10-18
      • 1970-01-01
      • 2020-07-01
      • 2015-03-27
      • 2018-02-18
      • 2020-12-11
      • 2011-09-19
      相关资源
      最近更新 更多