2012-04-23 270 views
1

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

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

有没有办法限制此cron作业的时间,以便它只在10 A.M和4 P.M之间运行?

+0

在下午4点再添加一个cron作业会杀死它吗? – zmccord 2012-04-23 05:33:54

回答

5

man 5 crontab是你的朋友。 (您的例子不这样做你要求它做什么; /1是默认的跳跃,因此多余的,因此该规范每分钟一旦由于领先*运行的0代替)

0 10-15 * * * your command here 

(我使用15,因为它发生在我之间,“10到4之间”是一个独占范围,所以你不想在16:00运行。)

0

如果您希望脚本每小时运行一次,您可以这样做: [code] 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该脚本将运行

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. 
+0

Ur方式也是正确的。它简单,快速和方便。谢谢你的帮助。欣赏它:) – Deepak 2012-04-23 06:32:48