S1, S2,... S10
重要なサービスC1が初期化された後にのみ開始できるいくつかのサービスがあります。 C1は、/var/run/critical.init
初期化が完了したことを示すファイル(たとえば)に書き込みます。この時点で、各サービスはS1..S10
systemdによって開始されなければなりません。
上記の実装を試みたときに、システムベースの.path
アクティベーションを使用し、次のS1
.path ファイルという 2 つのファイルを作成しました。
$ cat s1.path
[Path]
PathExists=/var/run/critical.init
Unit=s1.service
[Install]
WantedBy=multi-user.target
$ systemctl enable s1.path
そして、サービス自体を記述するファイルは次のとおりです。
$ cat s1.service
[Unit]
Description=Some service
After=syslog.target
[Service]
ExecStart=/usr/bin/s1
Type=simple
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl status s1
再起動後、デバイスが有効とマークされていることを確認しましたS1
。いいえps -ef
(予想通り)出力の列。ファイルを手動で作成した直後に、/var/run/critical.init
systemdがデバイスを起動しましたs1
。
上記の実験により、経路ベースの活性化が単位に対して機能することが確認された。今これをすべてのサービスに拡張したいと思いますS1...S10
。
最も明確な方法は.path
サービス別にファイルを作成することですが、私はよりエレガントなソリューションを探しています。
systemdを使用してこの問題を解決できますかtarget
?各サービスがの一部ではなくS1...S10
新しいものの一部である場合、すべてのユニットがトリガされる前に依存関係が存在するように設定できますか?他の提案も歓迎します。critical.target
multi-user.target
/var/log/critical.init
critical.target