web-dev-qa-db-ja.com

Apacheのように起動時に初期化するようにバイナリを設定する方法(サービスとして実行)

PhantomJSをサービスとして実行するようにセットアップしようとしています。 /etc/init.dでスケルトンファイルを見つけ、Ubuntu12.10で実行しています。これを理解しようとすると、/ etc/rc * .dディレクトリにシンボリックリンクがあり、Apacheが実行レベル2から5で実行されていることがわかりました。

私の質問は、2〜5個のフォルダーにS02phantomjsというシンボリックリンクを作成し、それを/etc/init.dに配置したスクリプトを指すようにすることです。または、これを構成するためにいくつかのアプリケーションを使用する必要がありますか?

私の懸念は、何かが足りないことです。そして、その番号部分の順序は、私が混乱させたくない非常に重要です。

また、これがすべての起動で実行されることを確認するだけでなく、他に何かしなければならないことがあるかどうかもわかりません。しかし、今すぐ実行を開始してください。

最後の質問です。スケルトンに基づく私のスクリプトは、ターミナルで実行すると、PhantomJSを通常実行するときと同じように座って待機します。 Apacheのようにバックグラウンドで実行したいのですが。これを達成するために私は何を変える必要がありますか?

みんなありがとう!

2
Patrick

PhantomJSはデーモンを実行するためのサポートを提供しないので 箱から出して 、あなたはあなた自身であなたのサービスの世話をするべきです。 /etc/init.d/skeletonを見つけて、それを使用してinitスクリプトを作成できたのは素晴らしいことです。あなたが説明していることは、あなたのプロセスがバックグラウンドに移行していないことを示しており、これはいくつかのラッパーによって修正することができます。これは、Debianベースのディストリビューションに固有のstart-stop-daemon、またはstdin/stdoutをリダイレクトして追加の状況を処理できる別のdaemonパッケージにすることができます。

Initスクリプトを書く従来の方法を使用しているとほぼ確信しているので、start-stop-daemonコマンドに--backgroundを追加するだけでよいと思います。

スクリプトの修正が完了したら、スクリプトがroot:rootによって所有され、権限が0755であることを確認します(例:rwxr-xr-x)。この後、マイケルハンプトンが回答で提供したupdate-rc.dコマンドを使用してsysvinitシンボリックリンクを更新します。

注意点として、バックグラウンドへのプロセスの送信をサポートし、他の場合に役立つ可能性のあるツールが他にもいくつかあります。たとえば、 supervisorpstartsystemd はこれをサポートします。正確な構文については、ドキュメントを参照してください。これらのいずれかを使用する場合は、完全なinitスクリプトを作成する必要はありません。

確かに、initスクリプトは、デーモンを起動するための最も古く、最もサポートされている方法です。

1
jollyroger

Initスクリプトがすでに存在し、適切に記述されている場合は、他のinitスクリプトと同様に通常どおり有効にするだけで十分です。

update-rc.d phantomjs defaults

または(12.04+)

update-rc.d phantomjs enable

(これは通常、apt-getとその従兄弟を含むパッケージをインストールするときにデフォルトで実行されます...)

1
Michael Hampton