systemdでのパスの有効化と宛先順序付けサービスの使用

systemdでのパスの有効化と宛先順序付けサービスの使用

S1, S2,... S10重要なサービスC1が初期化された後にのみ開始できるいくつかのサービスがあります。 C1は、/var/run/critical.init初期化が完了したことを示すファイル(たとえば)に書き込みます。この時点で、各サービスはS1..S10systemdによって開始されなければなりません。

上記の実装を試みたときに、システムベースの.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.initsystemdがデバイスを起動しましたs1

上記の実験により、経路ベースの活性化が単位に対して機能することが確認された。今これをすべてのサービスに拡張したいと思いますS1...S10

最も明確な方法は.pathサービス別にファイルを作成することですが、私はよりエレガントなソリューションを探しています。

systemdを使用してこの問題を解決できますかtarget?各サービスがの一部ではなくS1...S10新しいものの一部である場合、すべてのユニットがトリガされる前に依存関係が存在するように設定できますか?他の提案も歓迎します。critical.targetmulti-user.target/var/log/critical.initcritical.target

ベストアンサー1

おすすめ記事