デーモンを制御するために移植可能なサービススクリプトを作成できますか?

デーモンを制御するために移植可能なサービススクリプトを作成できますか?

私(または同僚の一人)は、デーモンの実行を制御するために1つ以上のシェルスクリプトを作成する必要があります。デーモンを起動し、正常に終了するよう指示し、強制的に終了できる必要があります。デフォルトでは、これは人々が伝統的にスクリプトを使って行ったことです/etc/init.d

Ubuntuに配布します。 RedHat/CentOS、おそらくAIXにデプロイしたいと思うかもしれません。私は移植可能な作業が好きなので、すべてのUNIXにデプロイできるようにしたいです。

それでは、移植可能なサービススクリプトを書くことは可能ですか?

私は通常のinit.dスクリプトのように動作し、「start」と「stop」をコマンドとして受け入れるポータブルBourneシェルスクリプトを書くことができると思いました。これはどこでも動作し、少なくともDebianとRedHatスタイルのシステムで自然なインターフェースを提供します。他の場所にも合いますか? init.dは普遍的ですか?注意すべきトラップはありますか?

さまざまな種類のサービススクリプトを生成するためのツールはありますか?起動と停止のためのスクリプトフラグメントを作成し、ツールにさまざまなプラットフォーム用のスクリプトを生成させることができます。

サービススクリプトルールのプラットフォーム固有の選択肢はありますか?私が出会ったデーモンツールそして走る;これはinit.dスクリプトを置き換えるものですか?彼らは良いですか?これはまた何ですか?

これは言う?

答え1

デプロイの詳細に依存しない方法で作成することは可能ですが、すべての* nixが同じ方法でサービスを開始するわけではありません。 AIXについてはよくわかりませんが、たとえばSolarisではsysvinitを使用せずにsmfを使用します。

CentOS / RHELは通常、initスクリプトの一般的な機能を容易にするために/etc/rc.d/functionsを使用しますが、Debianはstart-stop-daemonというバイナリを使用します。これがアップストリームパッケージでinitスクリプトが頻繁に見つからない理由です。

個人的には、サポートされている各オペレーティングシステム用のinitスクリプトを作成して、そのオペレーティングシステムのパッケージに含めました。

関連情報