使用exec重新启动崩溃二进制文件

时间:2015-01-24 23:32:49

标签: bash exec

对不起,这个问题很模糊,但我希望有人还可以提供帮助。 据我所知exec bash命令,它将代码段替换为参数指定的内容。实际上用其他东西替换正在运行的脚本。

但我很确定我看到人们在循环中使用exec(不是fork)来重新启动可执行文件,如果它崩溃或只是以非零退出代码退出。不幸的是我现在找不到那段代码。它是可能的还是我想象的东西?

2 个答案:

答案 0 :(得分:3)

我不清楚你所看到的是什么,但是可以想到在循环中使用exec来启动和重新启动进程的方法,例如:

while true
do
  ( unset DISPLAY && exec ./myfile )
done

( .. )这里是一个明确的子shell,所以即使它不明显也有一个分叉。

exec置于循环中的其他可能原因包括尝试执行不同的文件或不同的路径,直到找到有效的文件或创建或可用的文件。

但是,没有办法成功exec一个没有任何隐式或显式fork的进程,然后循环再次执行自己(除非脚本最终以递归方式执行)。

答案 1 :(得分:1)

这实际上是一个比你想象的更常见的问题。

在过去,我总是实现一个bash脚本来监视进程是否存在,如果不存在,则重新启动它。

以下是一些可能适合您的解决方案: https://serverfault.com/questions/52976/simple-way-of-restarting-crashed-processes