2016-08-22 99 views
1

我有一個可執行文件,它執行從接口FPGA的數據採集並以特定格式存儲它。偶爾,隨機,採集代碼停止援引接收錯誤。但是,重新運行可執行的作品。作爲看門狗的Shell腳本

因此,一個臨時安排是在shell腳本中運行可執行文件。相應的過程需要被監控。如果採集停止(並且過程結束),腳本應該重新運行可執行文件。

任何提示如何去呢?

回答

1

通過你的描述,這聽起來像你只是想要一個連續調用收集器的無限循環。

while true; do 
    collector 
done >output 

重定向環路外的輸出更高效(你只打開一次寫入文件),以及更簡單的(你不必在循環中找出是否覆蓋或追加)。如果你的收集器沒有產生標準輸出的數據,那當然,這個細節是沒有意義的。

0

grep for the shell script wrapper中的可執行進程。如果未找到PID,請重新啓動。您需要將Shell包裝程序安排爲cron作業。

+0

而不是cron工作,我可以使用,而真實;並在循環中添加睡眠? – user3440489

+0

你可以,但是如果unix進程以某種方式死亡,它會非常混亂。克朗人定期關注工作並讓他們繼續工作。 – xCodeZone

+0

你可以合併;一個簡單的無限循環和一個cron作業,如果它被殺死的話,這個循環會將循環備份起來。不過,它可能是不必要的複雜,並且仍然沒有保證(如果你的系統負載非常重,'crond'也可能被殺掉!) – tripleee