我一直在处理的一个 Bash 脚本在后台调用一些进程。我在父 Bash 脚本中使用了“等待”来等待所有后台进程完成。运行良好。
但是,问题在于重新启动。我希望如果任何子进程结束,它应该重新开始。我使用 While 尝试了一个永久循环,并使用 pgrep 检查进程状态并发出重启。但这会消耗资源。
一旦子后台进程停止/杀死/终止,是否还有其他可能重新启动子后台进程?
不要重新发明轮子,使用daemon 命令和--respawn
.
您还应该考虑 options --acceptable
,--attempts
并--delay
确保错误的进程不会导致无休止的重生循环(例如,当它们由于错误的命令行选项而立即死亡时)。