一般的な質問があります。*.service
特定のユニット*.service
が正常に起動した後、systemdユニットを起動するにはどうすればよいですか?
より具体的な質問は、開始website.service
後mongodb.service
にのみ開始するにはどうすればよいですか?言い換えれwebsite.service
ば、に依存する必要がありますmongodb.service
。
一般的な質問があります。*.service
特定のユニット*.service
が正常に起動した後、systemdユニットを起動するにはどうすればよいですか?
より具体的な質問は、開始website.service
後mongodb.service
にのみ開始するにはどうすればよいですか?言い換えれwebsite.service
ば、に依存する必要がありますmongodb.service
。
回答:
[ユニット]セクションの下の.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
されて有効になって、その後に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
で詳しく説明されています。
After=website.service
「website.serviceの後にユニットを実行してください!」という意味です。それがドキュメントで説明されていることです:「After =は、リストされたユニットの起動が完了した後に、構成されたユニットが起動されることを保証します」。「リストされているユニット」は「After =」の右側にあるユニットだと思います。
swap(a, b)