2013-09-25 176 views
0

我的Perl脚本(test.pl)分钟间隔现在在crontab中运行的运行Perl脚本1没有的crontab

* * * * * perl test.pl >/dev/null 2>&1 

我想运行我的脚本每隔1分钟inteval不使用crontab的。我不会有机会写cron作业到/etc/cron.d/,所以需要找到一个另一种解决方案

有没有办法做到这一点?

+1

'while:while;做perl test.pl>/dev/null 2>&1;睡60多岁; done'? – devnull

+2

你能解释一下你希望避免的“cron”吗?通常按计划运行某些东西需要运行的东西的排程系统*外部*。所以devnull的建议是一个长期运行的shell脚本,你可以停止并开始交互。我无法从你的问题中知道这是否够用 - 也许你希望脚本每次运行几分钟,并且希望避免编辑crontabs来打开和关闭它? –

+0

@Neil Slater - 将无法在/etc/cron.d/中写入cron作业,因此需要找到另一个解决方案 – Futuregeek

回答

5

Schedule::Cron是CPAN模块,它提供了运行周期任务强大的能力。

use Schedule::Cron; 
my $cron = new Schedule::Cron(sub {}); 
sub run_task { 
    # do something... 
} 
$cron->add_entry("0 11 * * Mon-Fri",\&run_task); 
$cron->run(); 

强烈建议,因为:

  1. 的时间间隔触发一个任务是定制的,灵活的,几乎等同于* nix系统crontab。所以当你有新的需求时,你可以改变你的脚本。

  2. 而不是定期运行整个脚本,它可以定期运行脚本一个单一的功能,如此反复,灵活;

0

尝试一个守护进程。把你的代码放在一个无限循环中,并在每次循环之间休眠60秒。我猜。