C#(Mono):程序失败时重新启动进程

时间:2011-09-24 14:46:18

标签: c# linux mono

我在Mono工作时相当新,并且想知道如何在Linux环境下强制我的控制台应用程序重启。我该怎么做呢?

3 个答案:

答案 0 :(得分:4)

如果进程终止,您可以使用类似Monit的内容来保持其运行。简要说明:

  

Monit可以在没有运行的情况下启动进程,如果进程没有响应则重新启动进程,如果进程占用过多资源则停止进程。

通常,将应用程序编码为“能够自行重启”永远不够可靠。有人要使用kill -9终止应用程序,您的应用程序将无法响应该应用程序。因此,需要某种类型的守护进程或监视器。

答案 1 :(得分:0)

我不确定这是否可以在Linux下运行,因为我从未使用过Mono,但我想尝试的是挂钩Process.Exited事件。 (我假设您正在使用Process类启动应用程序)

Process.Exited http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited.aspx

所以你可以做点像......

- 启动过程 - 进入退出的活动

-wait直到退出事件被称为

- 启动过程 - 进入退出的活动

祝你好运!

答案 2 :(得分:0)

我建议将此移至超级用户。

你想要使用Mono中没有任何内在的东西。您可以在Mono中创建一个Watchdog应用程序,它将检查并确保您的进程始终在运行,但是有很多Linux脚本和应用程序已经执行此操作。 Monit就是一个例子。

或者你可以进入/etc/inittab并找到名为respawn的行并在那里添加你的守护进程。 init将确保流程始终在运行。

以下是Java的示例守护程序启动脚本,您可以对其进行修改。 http://shrubbery.homeip.net/c/display/W/Java+Daemon+Startup+Script