サーバーのサービスにupstartを使用しています。 confファイルを作成して/etc/init
に配置するのは簡単ですが、完全にはインストールされていないようです。 1つは、service --status-all
に新しいサービスがリストされていないことです。チェックして、/etc/init.d
から/lib/init/ubstart-job
へのリンクを作成すると、ステータスに表示されます。しかし、これを手動で行うと、私はそれを正しくしていないと思うようになり、実行されていない他の構成手順が存在する可能性があります。
サービスを扱うすべてのツールに適切に登録されるように、新興企業サービスをインストールする正しい方法は何ですか?
新しいconfファイルを最初に/ etc/initフォルダーにコピーするとき、以下を呼び出す必要があります。
initctl reload-configuration
これにより、新興企業が適切に登録されます。
サービスマニュアルをご覧ください。
service --status-allは、statusコマンドですべてのinitスクリプトをアルファベット順に実行します。このオプションは、sysvinitジョブのステータスのみを呼び出しますinitstartリストを使用して同様の方法でupstartジョブを照会できます
(強調を追加)
そのため、/ etc/init.d(sysvinitジョブが置かれている場所)に追加すると機能します。だから:initctl list代わりに:)を実行してみてください。
Ubuntuで新しいサービスを追加/作成するときは、次の手順に従ってください。
/etc/init.d/<service name>
にサービスファイルを作成しますchmod 700 /etc/init.d/<service name>
update-rc.d <service name> defaults
update-rc.d <service name> enable
今、あなたがサービスを見ます
service --status-all
現在選択されている答えは、新しいサービスをupstartに追加するのに適切ですが、/ etc/init /の構成がロードに失敗する理由を見つけるのに特に役立ちません-欠落している部分は最初にinit-checkconfを使用して確認します設定が有効で、reload-configurationを使用している場合:
####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string
####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok
####then reload:
# initctl reload-configuration
#### and start:
# start test
.confファイルにエラーがあると、ジョブがinitctlで認識できなくなることがわかりました。たとえば、Upstartバージョン1.3以前ではsetuid
行があります。