2017-10-16 27 views
0

私は自分のデバイスを自動化するためにRaspberry PIを使用しています。私はラズベリーのコンソールアプリケーション(C++で書かれています)を人がいなくても何年も働く必要があります。だから私は毎日再起動するためのウォッチドッグを設定し、自動実行で私のアプリを実行します。自動再起動linuxコンソールアプリケーション

しかし、私のアプリがクラッシュする可能性があります。私は原因を明らかにすることはできませんし、速やかに再起動する必要があります。どのような方法が最善でしょうか?私は "親"のアプリケーションを書くことができるかもしれないし、私のスレッドとしてそれを呼び出すと、その作業を(しかし、それもクラッシュする可能性が)制御?あるいはこれを行う既存のデーモンがありますか?あるいは、誰かが知っている、これを行うためにPhytonアプリを書く方法、そして起動時にそれを実行する?

+0

サービスを作成し、init.dで処理します。それが既に存在するときにそれを試して再起動するためのラッパーを書くことには意味がありません! – UKMonkey

答えて

0

必ずしも質問に答える必要はありませんが、より良いアプローチは、「cron」などのテスト済みのユーティリティを使用して毎日の再起動をスケジュールすることです。アプリケーションが何らかの方法で失敗した場合

while true; do /bin/my_app; done 

しかし、この全体的なアプローチは、任意の助けになることはありません:それはクラッシュしやすい場合には実行中のプログラムを維持

0

だけでシェルスクリプトを使用して、十分に簡単です。プロセスのシャットダウンには至りません。このような状況で、プロービング可能な外部アクセスポイント(例えば、HTTPサーバ)をアプリケーションに提供するための共通のアプローチ。次に、他のいくつかのプロセスがプローブを定期的に実行し、適時に応答しない場合はプログラムを終了させます。この種のものには非常に洗練されたフレームワークがありますが、このタイプのシンプルな機能はシェルスクリプトだけで実装できます。

関連する問題