我使用*/58 * * * * /usr/bin/php -f ....
每58分钟运行一次。但我需要建立一个可以每2小时11分钟运行一次的cron。有办法吗?
答案 0 :(得分:1)
您可以使用at
。一旦在系统启动时调用at -f /path/script.sh "now + 131minutes"
,它将在正常运行131分钟后启动/path/script.sh。然后,在/path/script.sh中,插入另一个at
的调用。见http://linux.die.net/man/1/at
答案 1 :(得分:1)
此:
*/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
}