1

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

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

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

4

3 回答 3

6

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

0 10-15 * * * your command here

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

于 2012-04-23T05:36:21.043 回答
0

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

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

于 2012-04-23T05:35:25.053 回答
0

在您的 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.
于 2012-04-23T05:36:59.113 回答