2013-02-06 168 views
1

我一直在研究的Bash腳本調用了後臺的一些進程。我在父Bash腳本中使用了「等待」來等待所有後臺進程完成。 運行良好。需要重新啓動失敗的後臺進程Shell腳本

但是,問題是重新啓動。我希望如果任何子進程結束,它應該重新開始。我使用While嘗試了一個永久循環,並使用pgrep檢查進程狀態並重新啓動。但是這會消耗資源。

只要停止/終止/終止,是否有任何其他可能性重新啓動子後臺進程?

+0

使用'wait'有什麼問題? –

+0

可能相關:[用'SIGCHLD'使用'trap'重啓子進程](http://stackoverflow.com/questions/6769414/bash-restart-sub-process-using-trap-sigchld) – C2H5OH

回答

1

不要重新發明輪子,請使用daemon command--respawn

您還應該考慮選項--acceptable,--attempts--delay以確保有問題的進程不會導致無盡的重新生成循環(例如,由於命令行選項錯誤而立即死亡)。

+0

守護進程命令選項看起來不錯。試用我的手,仍然不清楚如何使用它: 守護進程 - 名稱processname -X可執行文件-c/configurationfileneededbyexecutable/ 不起作用。 – Ankit

+0

想通了。謝謝Aaron。作品!! – Ankit

+0

'-c'用於'守護進程',而不是你想要啓動的進程。如果您需要將參數傳遞給可執行文件,則必須將其包裝在腳本中。 –

相關問題