web-dev-qa-db-ja.com

カスタムupstartサービスをインストールする正しい方法

サーバーのサービスにupstartを使用しています。 confファイルを作成して/etc/initに配置するのは簡単ですが、完全にはインストールされていないようです。 1つは、service --status-allに新しいサービスがリストされていないことです。チェックして、/etc/init.dから/lib/init/ubstart-jobへのリンクを作成すると、ステータスに表示されます。しかし、これを手動で行うと、私はそれを正しくしていないと思うようになり、実行されていない他の構成手順が存在する可能性があります。

サービスを扱うすべてのツールに適切に登録されるように、新興企業サービスをインストールする正しい方法は何ですか?

50

新しいconfファイルを最初に/ etc/initフォルダーにコピーするとき、以下を呼び出す必要があります。

initctl reload-configuration

これにより、新興企業が適切に登録されます。

46
tombert

サービスマニュアルをご覧ください。

service --status-allは、statusコマンドですべてのinitスクリプトをアルファベット順に実行します。このオプションは、sysvinitジョブのステータスのみを呼び出しますinitstartリストを使用して同様の方法でupstartジョブを照会できます

(強調を追加)

そのため、/ etc/init.d(sysvinitジョブが置かれている場所)に追加すると機能します。だから:initctl list代わりに:)を実行してみてください。

18
Kyle

SysVサービスの場合

Ubuntuで新しいサービスを追加/作成するときは、次の手順に従ってください。

  1. /etc/init.d/<service name>にサービスファイルを作成します
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

今、あなたがサービスを見ます

service --status-all
12
Suyash Jain

現在選択されている答えは、新しいサービスを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
1
Jeff Parsons

.confファイルにエラーがあると、ジョブがinitctlで認識できなくなることがわかりました。たとえば、Upstartバージョン1.3以前ではsetuid行があります。

1
jcomeau_ictx