他のサービスが起動すると自動的にサービスを開始

他のサービスが起動すると自動的にサービスを開始

他のサービスに依存するサービスがあります。

[Unit]
After=main.service
Requires=main.service

[Service]
ExecStart=/usr/local/bin/dependent
Restart=always

素晴らしいポイント:

  • 実行するとサービスも停止systemctl stop mainします。dependent
  • 実行するとサービスも開始されますsystemctl restart maindependent

ただし、実行してもsystemctl main start依存サービスは開始されません。

どうすればいいですか?

答え1

そしてAfter=パラメータBefore=厳しく両方のサービスを開始(および終了することもできます)するコマンドに使用されます(両方のサービスを開始するように要求された場合)。サービスを一覧表示しても、そのサービスも開始されるわけではありません。

他のサービスが開始されるかどうかを制御するには、または(リソースセクションで)または(リソースセクションで)をRequires=使用する必要があります。Wants=Conflicts=[Unit]WantedBy=[Install]

あなたの場合、特定のサービスが依存するサービスが開始されたときに特定のサービスが開始されることを望みます(そうする理由がないため、自動的には発生しません)。ファイルに以下を追加して実行する必要がありますsystemctl enable dependent

[Install]
WantedBy=main.service

これはmain、起動するとサービスも開始し、サービスが失敗しても停止しないことを意味しますmain

関連情報