我想设置一个 cron 作业,它将每小时执行一个命令。但是,我希望这个命令应该在上午 10 点开始,并且应该每小时运行一次,直到下午 4 点。这项工作是在这些时间之间每天运行一次。该命令只不过是对 Perl 脚本的调用。以下 crontab 条目运行良好并每小时调用一次脚本
* */1 * * * cd path_to_file; perl file.pl > path_to_logs/log.txt
有没有办法限制这个 cron 作业的时间,使它只在上午 10 点到下午 4 点之间运行?
我想设置一个 cron 作业,它将每小时执行一个命令。但是,我希望这个命令应该在上午 10 点开始,并且应该每小时运行一次,直到下午 4 点。这项工作是在这些时间之间每天运行一次。该命令只不过是对 Perl 脚本的调用。以下 crontab 条目运行良好并每小时调用一次脚本
* */1 * * * cd path_to_file; perl file.pl > path_to_logs/log.txt
有没有办法限制这个 cron 作业的时间,使它只在上午 10 点到下午 4 点之间运行?
man 5 crontab
是你的朋友。(您的示例没有执行您声称的操作;/1
是默认跳过,因此是多余的,因此由于领先而不是.,该规范每分钟运行一次。)*
0
0 10-15 * * * your command here
(我使用了 15,因为在我看来“10 到 4 之间”是一个专有范围,所以你不想在 16:00 运行。)
如果您希望脚本每小时运行一次,您可以执行以下操作: [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 中的任何一个时,脚本将运行
在您的 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.