2012-07-03 71 views
2

我有一堆不同的進程(主要是shell腳本),需要在特定的時間啓動,然後需要在幾個小時後終止。現在我通過cron啓動它們,然後使用另一個cron作業來獲取進程ID並殺死它們。不是最乾淨的方式,特別是如果有多個相同腳本的副本在運行。基於時間的啓動和查殺過程

我想知道是否有某種可用的包裝可以啓動一個進程(在子shell?或fork?),然後在給定的時間殺死它。谷歌搜索沒有太大的收益,所以我想在深入瞭解自己的產品之前先與全知的計算器社區進行覈對。

謝謝!

回答

0

你已經擁有的是正確的解決方案。從cron開始,通過cron結束。關於同一個腳本的多個實例的問題,這是你的需要。您的需求需要運行同一腳本的多個實例嗎?

獲取進程ID並殺死它們。當你說你的意思是腳本將它們的pid記錄在一個你用來阻止它們的文件中?或者您使用ps/pidof

0

Monit是一個很好的工具,可用作控制/監視進程的包裝。

您的情況屬於服務測試功能,您可以根據process uptime採取措施。

check process myapp with pidfile /var/run/myapp.pid 
    start program = "/etc/init.d/myapp start" 
    stop program = "/etc/init.d/myapp stop" 
    if uptime == 3 hours then stop