systemd宣言の前後

systemd宣言の前後

man の systemd ユニットに対して与えられた定義は少し不明瞭です。https://www.freedesktop.org/software/systemd/man/systemd.unit.html

1 つのデバイスにfoo.service設定が含まれていて両方のデバイスがBefore=bar.service起動した場合、bar.service起動は foo.service開始するまで遅延します。 [...]は、リストされているデバイスの起動が完了した後に設定されたデバイスが起動することを保証し、逆に、リストされたデバイスが起動する前に設定されたデバイスが完全に起動することを確認するのとはAfter=反対です。Before=After=Before=

a.service私が持っているとしましょうb.service。状況によって異なりますので、a.service以前に完全にブートしたいと思います。b.serviceb.servicea.service

上記のマニュアルページを読んだ後も、次の事項の決定的な説明が見つかりません。

  • あなたただユニットファイルBefore=b.serviceに指定する必要があります。a.service
  • あなたただユニットファイルAfter=a.serviceに指定する必要があります。b.service
  • あなたはする必要があります両方 After=a.serviceb.serviceユニットファイルそして Before=b.servicea.serviceユニットファイル

どのシステム単位のファイル依存関係を宣言する必要がありますか?それはそんなに重要なのか?

答え1

After=これらのデバイスの1つまたはデバイスのペアBefore=の1つだけが必要です。次のマニュアルページの内容を好むこともできますsystemctl

--after ... After =依存関係は自動的にミラーリングされ、Before =依存関係を生成します。

list-dependenciessystemdが実行する必要があることを確認するには、このオプションを使用します。例えば

$ systemctl list-dependencies --after timers.target
timers.target
* |-sysstat-collect.timer
* |-sysstat-summary.timer
* |-systemd-tmpfiles-clean.timer
* `-unbound-anchor.timer

$ systemctl list-dependencies --before sysstat-collect.timer
sysstat-collect.timer
* |-sysstat-collect.service
* |-shutdown.target
* `-timers.target

切り替えると、upstartいくつかのヒントが得られます。ここ、リストされているすべてのブログを読むことができます。ここタイトルの下管理者のためのsystemdブログシリーズ

関連情報