一般的な質問があります。*.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.serviceb.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)