2016-05-25 23 views
0

我該怎麼保證,多個某些程序的實例總是在運行?Bash腳本 - 維護多個實例運行

假設我想確保某個程序的4個實例始終在運行。 如果有一個實例被殺害,應該開始新的實例。 如果5個實例正在運行,則應該殺死一個實例。

回答

1

這不是一個真正的shell問題,因爲這個方法是相同的,無論你使用哪個shell。

我認爲最簡潔的解決方案是有一個「看門狗」,它檢查正在運行的進程(使用ps),並在必要時啓動一個新進程或殺死一個不必要進程。

單程 - 我在類似情況下使用的一種方法是編寫一個cron作業,定期(例如:每5分鐘一次)啓動看門狗並讓它工作。

如果這樣的間隔對您的情況來說太長(即如果您需要比每分鐘更頻繁地檢查它),那麼您可以讓看門狗連續運行一個循環。儘管如此,你仍然需要一個cron作業,它會不時地控制看門狗 - 以防止看門狗死亡。在這種情況下,您可以考慮將其作爲daemon運行。