【问题标题】:Setting cron job end time设置 cron 作业结束时间
【发布时间】:2012-05-03 18:04:24
【问题描述】:

我想设置一个每小时执行一个命令的 cron 作业。但是,我希望这个命令应该在上午 10 点开始,并且应该每小时运行一次,直到下午 4 点。这项工作将在这些时间之间每天运行。该命令只不过是对 Perl 脚本的调用。以下 crontab 条目运行良好并每小时调用一次脚本

* */1 * * * cd path_to_file; perl file.pl > path_to_logs/log.txt

有没有办法限制这个 cron 作业的时间,使它只在上午 10 点到下午 4 点之间运行?

【问题讨论】:

  • 在下午 4 点添加另一个 cron 作业来杀死它?

标签: crontab


【解决方案1】:

man 5 crontab 是你的朋友。 (您的示例没有执行您声称的操作;/1 是默认跳过,因此是多余的,因此该规范每 分钟 运行一次,因为前导 * 而不是 0 .)

0 10-15 * * * your command here

(我使用 15,因为我突然想到“10 到 4 之间”是一个专有范围,所以你不想在 16:00 运行。)

【讨论】:

    【解决方案2】:

    如果您希望脚本每小时运行一次,您可以执行以下操作: [代码] 00 10,11,12,13,14,15,16 * * * cd path_to_file; perl file.pl > path_to_logs/log.txt [/代码]

    这意味着当分钟达到 00 并且小时达到 10 11 12 13 14 15 16 中的任何一个时,脚本将运行

    【讨论】:

      【解决方案3】:

      在您的 Perl 脚本中(或在 Perl 脚本的包装器中),您可以使用 localtime 检查小时,如果不在上午 10 点到下午 4 点之间,则退出:

      use strict;
      use warnings;
      
      my @lt=localtime;
      my $hour=$lt[2];
      
      unless($hour>=10 and $hour<=16)
      {
        print "Not between 10am and 4pm.  Exiting.\n";
        exit;
      }
      
      #put the rest of your code here.
      

      【讨论】:

      • 你的方法也是正确的。它简单、快捷、方便。谢谢你的帮助。欣赏它:)
      猜你喜欢
      • 2019-05-23
      • 1970-01-01
      • 2013-06-01
      • 2016-01-29
      • 2012-11-12
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 2013-08-09
      相关资源
      最近更新 更多