2011-09-07 47 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

嗯,我確實說過它可能有點矯枉過正;) –