一般的な質問:特定の.service
が正常に開始された後にsystemd .service
を開始するにはどうすればよいですか?
具体的な質問:website.service
が開始した後にのみmongodb.service
を開始するにはどうすればよいですか?つまり、website.service
はmongodb.service
に依存する必要があります。
[Unit]セクションの下の.serviceファイルで:
[Unit]
Description=My Website
After=syslog.target network.target mongodb.service
重要な部分はmongodb.service
です
ただし、マンページにはフォーマットが記載されているため、一見すると明確ではありません
After=
依存関係は、After=
を含むサービスとAfter=
に含まれるサービスの両方が起動の一部として開始されるようにスケジュールされている場合にのみ有効です。
例:
a.service
[Unit]
After=b.service
このように、a.service
とb.service
の両方がenabledの場合、systemdはb.service
の後にa.service
を並べます] _。
誤解していない場合は、b.service
が有効になっていなくても、a.service
が開始したときにb.service
を開始する方法を尋ねます。
このためのディレクティブは、Wants=
またはRequires=
の下の[Unit]
です。
website.service
[Unit]
Wants=mongodb.service
After=mongodb.service
Wants=
とRequires=
の違いは、Requires=
を使用すると、b.service
の起動に失敗するとa.service
の起動が失敗するのに対し、Wants=
] _、a.service
は、b.service
が失敗しても開始します。これは .unit
のmanページ で詳細に説明されています。