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.service
b.service
a.service
上記のマニュアルページを読んだ後も、次の事項の決定的な説明が見つかりません。
- あなたただユニットファイル
Before=b.service
に指定する必要があります。a.service
- あなたただユニットファイル
After=a.service
に指定する必要があります。b.service
- あなたはする必要があります両方
After=a.service
b.service
ユニットファイルそしてBefore=b.service
a.service
ユニットファイル
どのシステム単位のファイル依存関係を宣言する必要がありますか?それはそんなに重要なのか?
答え1
After=
これらのデバイスの1つまたはデバイスのペアBefore=
の1つだけが必要です。次のマニュアルページの内容を好むこともできますsystemctl
。
--after ... After =依存関係は自動的にミラーリングされ、Before =依存関係を生成します。
list-dependencies
systemdが実行する必要があることを確認するには、このオプションを使用します。例えば
$ 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ブログシリーズ。