我有一個非常簡單的Perl腳本中被殺,在一個函數執行以下操作:Perl腳本是睡眠()
if (legato_is_up()) {
write_log("INFO: Legato is up and running. Continue the installation.");
$wait_minutes = $WAITPERIOD + 1;
$legato_up = 1;
}
else {
my $towait = $WAITPERIOD - $wait_minutes;
write_log("INFO: Legato is not up yet. Waiting for another $towait minutes...");
sleep 30;
$wait_minutes = $wait_minutes + 0.5;
}
出於某種原因,有時(像1/3運行)的腳本獲取殺害。我不知道誰對殺人負責,我只知道它發生在「睡眠」呼叫期間。
任何人都可以在這裏給我一個提示嗎?腳本被殺後,它的工作沒有完成,這是一個大問題。
謝謝。
是從控制檯執行還是從apache內執行?如果它來自apache,請查看超時選項...也可能在函數的某處出現錯誤,因爲您沒有看到其他代碼,我們無法真正瞭解它們。如果是從瀏覽器調用,並且您正在使用apache或類似的,您可以檢查error_log並查看它是否包含任何可能對您有幫助的東西... – Prix 2010-07-15 19:56:56
它正在從控制檯執行。該腳本是安裝包裝的一部分,用於安裝簡單的軟件。腳本最後運行,目的是驗證軟件是否啓動(這是legato_is_up()所做的)。 操作系統是Red Hat AS3,標準配置。 – Alex 2010-07-15 20:01:53
你有沒有機會在Dreamhost上運行它?他們傾向於殺死持續的進程。 – Schwern 2010-07-15 20:35:37