我一直在研究的Bash腳本調用了後臺的一些進程。我在父Bash腳本中使用了「等待」來等待所有後臺進程完成。 運行良好。需要重新啓動失敗的後臺進程Shell腳本
但是,問題是重新啓動。我希望如果任何子進程結束,它應該重新開始。我使用While嘗試了一個永久循環,並使用pgrep檢查進程狀態並重新啓動。但是這會消耗資源。
只要停止/終止/終止,是否有任何其他可能性重新啓動子後臺進程?
我一直在研究的Bash腳本調用了後臺的一些進程。我在父Bash腳本中使用了「等待」來等待所有後臺進程完成。 運行良好。需要重新啓動失敗的後臺進程Shell腳本
但是,問題是重新啓動。我希望如果任何子進程結束,它應該重新開始。我使用While嘗試了一個永久循環,並使用pgrep檢查進程狀態並重新啓動。但是這會消耗資源。
只要停止/終止/終止,是否有任何其他可能性重新啓動子後臺進程?
不要重新發明輪子,請使用daemon command和--respawn
。
您還應該考慮選項--acceptable
,--attempts
和--delay
以確保有問題的進程不會導致無盡的重新生成循環(例如,由於命令行選項錯誤而立即死亡)。
使用'wait'有什麼問題? –
可能相關:[用'SIGCHLD'使用'trap'重啓子進程](http://stackoverflow.com/questions/6769414/bash-restart-sub-process-using-trap-sigchld) – C2H5OH