2013-09-25 175 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秒。我猜。