Ruby Daemon-kit を使用して、Rails アプリケーションのさまざまなバックグラウンド操作を行うサービスをセットアップしています。
コマンドラインで呼び出すと、正常に動作します。
./bin/bgservice
再起動時に自動起動するように、デーモン initd スターター スクリプトを作成するにはどうすればよいですか?
いくつかのアプローチがあります:
ディレクトリ (またはターゲットディストリビューションのどこにでも) に/etc/init.d/
配置できるスクリプトを作成できます。/etc/rc?.d/
このメカニズムの詳細については、Debian ポリシー ガイドラインとopenSUSE initscript チュートリアルを参照してください。initscript には厄介な数のディストリビューション固有の特異性があるため、単純なものを作成して、ディストリビューションにその環境に合わせた「より良い」ものを提供するように依頼する必要はありません。(たとえば、Debian から派生したディストリビューションは、非常に便利なstart-stop-daemon(8)
ヘルパーを提供しますが、他のディストリビューションにはまったく欠けています。)
サポートするディストリビューション (Ubuntu、Google ChromeOS、Fedora など)upstart
のジョブ仕様を作成できます。ドキュメンテーションはまだかなり貧弱ですが、Ubuntu にはいくつかの詳細と多くの例があり、おそらく. 依存関係を正しくすることは、すべてのディストリビューションである程度の作業になる可能性がありますが、ジョブ仕様は initscripts よりも記述と保守がはるかに簡単に見えます。upstart
upstart
/etc/init/
upstart
upstart
/etc/inittab
標準の SysV-initinittab(5)
ファイルをまだサポートしているディストリビューションに行を追加できます。これは、プログラムを再起動する必要があるかどうかを判断するために取得した pid を使用するため、 fork(2)
/ setsid(2)
/プログラムが通常のデーモンのfork(2)
呪文を実行しない場合にのみ役立ちます。init
fork(2)
最新の Vixieは、ファイル内の指定子をcron(8)
サポートしています。これは、システムの crontab とユーザーの crontab の両方で使用できます。これは、通常のログイン アカウントでプログラムを実行したい場合に便利です。@reboot
crontab(5)
daemon-kit の作成者として、私はさまざまなディストリビューションに対処するために init スタイルのスクリプトを作成することを避けてきました。これらは古い init-V スタイルから新しい upstart/insserv への移行であり、悪夢を救うことができます。
これを行うために私が推奨する方法は、god config-generator を使用し、god が起動時に (rinit またはその他の手段によって) 開始されるようにし、god が最初にデーモンを起動して実行し続けることです。
せいぜい、daemon-kit を展開して、ブート用の runit スクリプトを生成できるようにします...
HTH。