2013-02-06 112 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'用于'守护进程',而不是你想要启动的进程。如果您需要将参数传递给可执行文件,则必须将其包装在脚本中。 –

相关问题