systemdユニットファイルは、変更されたときにリロードする必要がありますか?


138

mine.serviceファイルを書くとしましょう。次にを使用しますsystemctl enable mine.service

後で編集することにした場合mine.service、変更されたことを伝えるsystemd必要mine.serviceがありますか?もしそうなら、どうすればいいですか?

回答:


169

ユニットファイルに変更を加えたらsystemctl daemon-reloadここで説明するようにを実行する必要があります

daemon-reload
systemdマネージャー構成をロードします。これにより、すべてのジェネレーターが再実行され(systemd.generator(7)を参照)、すべてのユニットファイルが再ロードされ、依存関係ツリー全体が再作成されます。デーモンがリロードされている間、ユーザー設定のためにsystemdがリッスンするすべてのソケットは引き続きアクセス可能です。

その後、必要に応じてサービスを再起動(またはリロード)できます

systemctl restart your-service-name

(daemon-reloadはサービス自体をリロード/再起動せず、systemdに新しい構成を認識させるだけです)


2
systemctl restartサービス自体を実際に再起動するには、aを実行する必要があることもわかりました
...-hwjp

3
念のため、daemon-reload万能ではなくsystemctl --user daemon-reload、ユーザーサービスのために実行する必要があります。
オレグスジェレメジェフス18年

:注意点として、それはまた、それらを再実行する前に、「発電機により作成された以前の設定を削除」freedesktop.org/software/systemd/man/systemd.generator.html
rogerdpackを

8

上記の答えへの追加として:[Install]ディレクティブで何かを変更した場合sudo systemctl reenable YOURUNITFILE、.targetディレクトリでシンボリックリンクを再作成するために実行する必要があるかもしれません。


これは私のためにトリックをしました!systemctlがサービスファイルをリロードしなかった理由を理解できませんでした。
antonagestam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.