私は Daemontools を使用して、サーバー上のUnixサービスを監視するシンプルで信頼できる方法を提供しました。それはうまく機能しますが、異なる考え方( The DJB Way )が必要であり、いくつかの一般的な不満があります:
2年ほど前に同様の「スーパーバイザ/ウォッチドッグ」デーモンがいくつか動作していたことを覚えていますが、一部はまだまだ端が荒れていました。
Daemontoolsから他のツールに切り替えた場合、何を選択し、うまく機能しましたか? RedHatまたはUbuntuには、デフォルトでプロセス監視ユーティリティが付属していますか?
Hrm、Ubuntuを使用している場合、その新しいinitプロセス pstart には、プロセス監視のレベルが含まれています。サービスの標準的な開始と停止、SysV initスクリプトに使用できます。また、実行中のアプリケーションを監視し、アプリケーションが停止した場合に再起動することもできます。
また、ニーズに応じて、inittabを介して貧者のプロセスリスターターを実装することもできます。
プロセスを監視するために主に何かを探している場合、それが常に実行されていることを確認し、実行されていないときに再起動すると、私は restartd で幸運を手に入れました。残念ながら、私が知っている唯一のソースはDebianパッケージです。ただし、これは非常に小さく単純なアプリケーションであり、基本的には単一の.cファイルと.hファイルで、makeファイルが含まれています。 Red HatでDebianソースのtarballからコンパイルするのは簡単です(以前の仕事でRPMを作成しました)。
私が聞いたが使用されていない最後のオプションは Supervisor です。これは有望なツールのように見えますが、再起動は過去には十分に機能しており、私が必要としていることについては、まだそれを試す必要はありませんでした。
runitの+1。既存のデーモンツールの引数とオプションと互換性があり、デーモンツールよりも多くの機能と柔軟性を備えています。かなりきちんとしています。
しかし、あなたが言及したように、多くのツールには、Apache2ctl、ejabberdctl、poundctl、collectdなどの独自のコントロールバイナリが付属しています。ハックは存在しますが、提供されたツールを使用する方が良い場合があります。可能な実装。私は通常妥協し、ほとんどのサービスをrunitの監督下で実行しています。そして、他の人は簡単な方法を使用して実行することを許可することができます。
runit があります。 daemontoolsとの違いと類似点は何なのかは言えませんが、Berstein風のウェブサイトから判断すると、確かにBernsteinの影響があると思います。
Fedoraはsystemdに切り替える準備ができているようです: http://0pointer.de/blog/projects/systemd.html
すでに述べたdaemonize
およびdaemontools
の代わりに、libslackパッケージの daemon コマンドがあります。
daemon
は非常に構成可能であり、自動再起動、ロギング、pidfile処理などの面倒なデーモンのすべてに対応します。
supervisord があります
Libslackの daemon ツールもあり、Cで記述され、さまざまな(Unix)プラットフォームで利用できます。
それは非常に構成可能であり、自動再起動、ロギング、pidfile処理などの面倒なデーモンのすべてに注意を払っています。