2009-05-28 203 views
9

如果我有一個每10分鐘運行一次的cron作業,並且出於某種原因,這一次需要12分鐘來運行作業,那麼cron會在前一個作業仍在運行時啓動另一個代碼實例嗎?如果是的話,你怎麼能防止這在Linux上?運行Cron作業

回答

10

是的,它會的。

您應該讓程序創建一個.pid文件(例如在/ var/run /中)。當它啓動時,它應該檢查這個文件是否已經存在,如果是,退出。

你正在運行哪個程序/腳本?

+0

我運行一個PHP腳本來發送郵件。 – 2009-05-28 20:33:15

+0

這樣的事情會做的伎倆,然後http://www.dreamincode.net/code/snippet2407.htm – MartinodF 2009-05-29 02:32:11

+0

你能告訴我們如何做到這一點snipet? – oneofakind 2014-04-15 17:21:18

3

是的。不管前一個還沒有完成,Cron將按照預定的時間間隔啓動一個進程。

您可以touch一個文件,如另一個答案中所述,並在進行您的過程之前檢查它的存在。

或者你可以檢查,看看進程列表,如果「實例」已經在運行:

ps -ef | grep *your_script_name* | grep -v grep | wc -l