我一直在研究的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