web-dev-qa-db-ja.com

Systemd:特定のサービスの後にサービスを開始

一般的な質問:特定の.serviceが正常に開始された後にsystemd .serviceを開始するにはどうすればよいですか?

具体的な質問:website.serviceが開始した後にのみmongodb.serviceを開始するにはどうすればよいですか?つまり、website.servicemongodb.serviceに依存する必要があります。

66
user2312578

[Unit]セクションの下の.serviceファイルで:

[Unit]
Description=My Website
After=syslog.target network.target mongodb.service

重要な部分はmongodb.serviceです

ただし、マンページにはフォーマットが記載されているため、一見すると明確ではありません

systemd.unit-整形済み

systemd.unit-あまり整形されていない

88
user2312578

After=依存関係は、After=を含むサービスとAfter=に含まれるサービスの両方が起動の一部として開始されるようにスケジュールされている場合にのみ有効です。

例:

a.service
[Unit]
After=b.service

このように、a.serviceb.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ページ で詳細に説明されています。

38
Umut