私は現在、Linux 上で動作する実行可能ファイルを開発しています。この実行可能ファイルを監視し、強制終了されたものを再起動するスーパーバイザーが必要です。そうするためのコマンドはありますか?または、それを行う方法を提案してください
注: コードは c++ です
このスーパーバイザーは既に存在し、常に実行されています。と呼ばれinit
、ほとんどのバージョンは のエントリによって制御されます/etc/inittab
。
これを行う最も簡単な方法は、プロセスを自分で生成し、終了するのを待ってから再起動することです。これを行う最も簡単な方法は、シェルスクリプトループを使用することです。ただし、一般的に、この種のウォッチドッグアーキテクチャは、脆弱でグリッチになる傾向があります。なぜあなたのプロセスは死にかけているのですか?再起動中に何が起こりますか?プロセスの現在の「バージョン」が過去のある時点と同じであると想定する、システムの他の場所に保存されている状態はありますか?
一般的に、これは行われていません。ほとんどの場合、プロセスを1つのイベント/コマンド/要求を処理する1回限りのものとして設計するか、常に生きていると推定できるように堅牢に記述するのが最善です。それがうまくいかない場合は、シェルループでラップしてください。