Debian Squeezeボックスで終了した後に再起動したいgolangプログラムを持っています。事は、Apache 2 mod_proxy設定の背後でHTTPを提供することです。プロセスが失敗することはないと思いますが、それに対する保険をかけたいです。
Ubuntuでは、プロセスを存続させるためにupstartを使用しました。 Debianは、私が理解しているUpstartがinitの置き換えであることを好みません。
Squeezeで動作し、initでNiceを再生するプロセスが終了した後に1つ以上のプロセスを再起動する代替手段はありますか?
そのための最善の方法はdaemontools
です。プロセスを監視および再起動できます。
彼らのウェブサイトのドキュメントを参照してください: http://cr.yp.to/daemontools.html
supervise は、軽量で効率的な代替手段です。 debianでは、それは daemontools にパッケージ化されています。この 関連する質問 を読むこともできます。これは、監督の批判をいくつかリストし、別の可能性として restartd について言及しています。
最後に、非常に簡単な設定が必要な場合は、 monit で大成功しました。 Debianにパッケージされている でもあります。
プロセスの再起動を処理するクロスディストリビューションの方法は、cronと簡単なスクリプトを使用することです。あなたはここに書き込みを見ることができます Linuxでジョブを実行し続ける方法
スクリプトは次のようになります
#!/bin/bash
# make-run.sh
# make sure a process is always running.
# Add the following to the crontab (i.e. crontab -e)
# */5 * * * * /home/path_to_make_run/make-run.sh
process=servermonitoringhq
makerun="/home/path_to_the_job_you_want_running/runjob.sh"
if pgrep $process > /dev/null
then
exit
else
$makerun &
fi
監視または監視は、単一のプロセスを維持するのに適しています。 「1つ以上の」プロセスを存続させることを求めているので、 supervisord をプラグインしたいと思います。単一のプロセスを管理することは確かに過剰ですが、複数のプロセスを追跡する必要がある場合は、それが問題になることがあります。
1つのオプションは、スクリプトを/etc/inittab
に置く代わりに/etc/init.d/
を使用することです。
次の形式でエントリを追加するだけです。
<jobname>:<runlevels>:respawn:<command>
残念ながら、これは通常のstart/stop/restart initコマンドを使用できないことを意味しますが、スクリプトが常に実行されていることを確認する必要があります。