1

我目前正在开发一个在 linux 上运行的可执行文件。我想要一个监督这个可执行文件并重新启动它被杀死的主管。有没有这样做的命令?或建议我一些方法来做到这一点

注意:代码是c++

4

3 回答 3

1

这个主管已经存在并且一直在运行。它被称为init,并且大多数版本都由 中的条目控制/etc/inittab

于 2012-07-20T19:05:10.530 回答
1

Monit带有大多数 linux 发行版,可以做你正在寻找的事情,还有更多,比如检查内存、磁盘空间、连接......

文档 中,您的监视器配置文件中可能会有类似的内容:

check file with path /cifs/mydata
  if does not exist for 5 cycles then exec "/usr/bin/mount_cifs.sh"
于 2012-07-20T19:09:49.940 回答
0

最简单的方法就是自己生成进程,等待它退出,然后重新启动它。最简单的方法就是在 shell 脚本循环中。但是,一般来说,这种看门狗架构往往是脆弱和有故障的。为什么你的进程会死掉?重新启动时会发生什么?系统中的其他地方是否保留了假设您的流程的当前“版本”与过去某个时间相同的状态?

通常,这只是没有完成。几乎总是最好将您的流程构建为一次性处理一个事件/命令/请求,或者健壮地编写它以便可以假定它始终处于活动状态。如果你不能让它工作,只需将它包装在一个 shell 循环中。

于 2012-07-20T19:02:22.073 回答