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


51

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

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


2
この男は成り上がりのサービスを使用して、私の質問のいずれかを答えて詳細な説明を与え、それが見逃されている可能性がありますステップ指摘するかもしれないaskubuntu.com/a/278128/75967
ミーアボルグ

1
という意味/lib/init/upstart-jobですか?
ダロア

回答:


46

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

initctl reload-configuration

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


8
これは正しく仕事(すなわち、設定だからstartstop仕事を)が、それは仕事がすべてのステータスに表示がありません。/etc/init.d/そのためには、手動で追加する必要がありました。
ジェームズマクマホン

1
@JamesMcMahon initctl listsudoでコマンドを実行する必要があります:sudo initctl list。そうすれば、サービスの完全なリストが表示されます。
シャヒリヤールイマノフ

なぜsudoなのか、initctlリストの出力をまったく変更しないようです。
LovesTha

@JamesMcMahon 、I still had to manually add it to /etc/init.d. あなたはまだ何を追加する必要がありましたか?つまり、に追加されたX.confファイルに加えて/etc/init、にファイルを追加する必要があるということ/etc/init.dです。
ケビンメレディス

@KevinMeredith、申し訳ありませんが私はこれ以上詳細ではありませんでした。2年が経ちましたが、その詳細を思い出せません。init.dのドキュメントを見ると、明確になっているはずです。
ジェームズマクマホン

18

サービスマニュアルをチェックアウトします。

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

(強調を追加)

それが/etc/init.d(sysvinitジョブがある場所)にそれを追加することで機能するようになった理由です。そのため、代わりにinitctl listを実行してみてください:)。


That's why adding it 何を追加しますか?のmy_service.confファイルに加えて、ファイル/etc/initも必要/etc/init.dですか?
ケビンメレディス

Ubuntu 16.04.4 LTSで動作しない\\ $ initctl list initctl:Name "com.ubuntu.Upstart" does not exist $ sudo initctl list initctl:Unable to connect to Upstart:Failed to connect to socket / com / ubuntu / upstart:接続が拒否されました
nine9five

13

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

15
あなたの答えは、新興企業ではなく、sysvに関連しています。削除することもできます。
jcomeau_ictx

3
それは確かに有用な応答です。
-ATorras

別のサービスに関連していますが、実際に
役立ちます

1

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


1

現在選択されている答えは、新しいサービスを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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.