2011-09-07 48 views
1

如果我的软件由于错误而中止,是否有办法让我的Ubuntu立即重新打开它?我正在使用g ++ sample.cpp -o样本 和 ./sample自动重新运行,Linux

但是,如果它崩溃,这对我来说真的是一个问题。解决方案是什么?谢谢。

回答

4

一个简单的bash脚本?

#! /bin/bash 

until ./my_app; do 
    sleep 2 # To prevent insanity 
done 
+0

比接受的答案更好,因为它使程序能够自愿退出。 – Zoey

+0

+1这是每个人都应该掌握的脚本。 – Iterator

+0

我使用的是ubuntu,并在做root @ monstenation:〜#!/ bin/bash -bash:!/ bin/bash:event not found为什么? – Eli

1

简单的解决方案就是让shell脚本每次完成执行就启动程序。

例如:

#!/bin/bash 
while true 
do 
    ./sample 
done 

您可能希望保存日志文件或程序的输出,每次采样完成执行。

+0

一个可能的问题与此(和一些的其他解决方案)是,如果出现错误导致程序每次启动时都会很快崩溃,则会多次运行该程序。您可以考虑在循环中添加一个“睡眠”。 –

+0

我正在使用ubuntu,并在做这个root @ monstenation:〜#!/ bin/bash -bash:!/ bin/bash:event not found 这是为什么? – Eli

+0

将内容保存到脚本中,例如'foo.sh'。然后用'chmod + x foo.sh'使它可执行。然后像这样执行:'。/ foo.sh'。或者,您可以在bash提示符处输入每一行,只需将第一行忽略(尽管如果您计划再次运行它,您应该将其另存为脚本)。 –

0

另一种方法是有一个主守护进程变得频繁的心脏从要监控并没有接受心脏,节拍,开始其正在收看的节目的节目甘拜下风。

0

为你以后可能矫枉过正,这很难说,但God monitoring framework可能帮助 - 不是一个简单而有点-FUL功能更先进,(1)

+0

好神(没有双关意图,但是......),这就是系统的一个缺点 - 它不会重写整个shell(并且可能做一个shell不能做的事情)。 – Iterator

+0

嗯,我确实说过它可能有点矫枉过正;) –