システム起動時にサービスの依存関係を再計算するようにsystemdに指示する方法を探しています。具体的には、別のサービスを有効にして後で同じ開始順序で2番目のサービスを開始するには、1つのサービスが必要です。これは自動化された展開プロセスの一部です。起動プロセスの最初にシステムが最初に起動すると、自動的に設定されます。取ることができるステップの1つは、追加のサービスを有効にすることです。残念ながら、その手順の変更は、次の再起動まで適用されないようです。初期展開後にコンピュータを再起動することはオプションではありません。
私が達成したいものの一般的なアイデアは次のとおりです。
/etc/systemd/system/firstboot.service:
[Unit]
Description=Enable MyService
DefaultDependencies=no
After=sysinit.target
Before=basic.target
[Service]
Type=oneshot
ExecStart=/bin/systemctl enable myservice.service
ExecStartPost=/bin/systemctl disable firstboot.service
[Install]
RequiredBy=basic.target
/etc/systemd/system/myservice.service:
[Unit]
Description=MyService
[Service]
Type=simple
ExecStart=/usr/local/bin/myservice
[Install]
WantedBy=multi-user.target
残念ながら、期待どおりに動作しません。サービスが有効になっていますが、以前は開始されませんでしたmulti-user.target
。
$ systemctl status myservice
myservice.service - MyService
Loaded: loaded (/etc/systemd/system/myservice.service; enabled)
Active: inactive (dead)
systemctl isolate multi-user.target
マシンを再起動して強制的に起動できます。
systemctl daemon-reload
追加および/またはsystemctl daemon-reexec
/ExecStart
をExecStartPost
試しましたが、firstboot.service
何も機能しないようです。
起動パスを再計算し、起動時に変更を含めるようにsystemdに指示する方法はありますか?それとも、サービスを強制的に開始するには、起動プロセスの後半に何かをする必要がありますか?