web-dev-qa-db-ja.com

systemctl daemon-reloadを実行する必要があるかどうかを知る方法

現在実行中の構成が古いことを確認する方法はありますか?現在実行中の構成を表示してファイルと比較する方法はありますか?

トラブルシューティングを行うには、リロードを実行する前に、実行中の構成を把握しておくことが重要です。コマンドが実際に構成を更新したかどうかをコマンドが教えてくれる場合にも役立ちます。

6
red888

ロードされたユニットは、コマンド_systemctl show <unit>.service_で確認できます。私の知る限り、ユニットファイルの変更をチェックするツールはありません。

同様に、このbashコマンドfor var in $(systemctl | grep running | awk '{print $1}'); do systemctl status $var | grep "changed on disk" | grep ".service"; doneを実行すると、変更されたファイルが表示されます。

例:

_[root@centos-linux atolkachev]# for var in $(systemctl | grep running | awk '{print $1}'); do systemctl status $var | grep "changed on disk" | grep ".service"; done
Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.
_
6

systemdは、変更されたユニットファイルを表示するためのサポートを提供しませんが、次のようなbashスクリプトを使用できます。

while read unit; do
    systemctl status $unit 2>&1 | awk '/changed on disk/ {print $2}'
done< <(systemctl list-unit-files | grep \.service | awk '{print $1}')
1