ディスクで変更されたシステムサービスを見つける方法は?

ディスクで変更されたシステムサービスを見つける方法は?

example.serviceというシステムサービスがあるとしましょう。ファイルを修正して実行すると、systemctl status example.service次の警告が表示されます。

警告する:ディスクのユニットファイル、ソース設定ファイル、またはexample.serviceのドロップインが変更されました。デバイスをリロードするには、「systemctl daemon-reload」を実行してください。

私が知っている限り、これはsystemctl daemon-reloadsystemdに変更を認識させ、systemctl restart example.serviceサービスを停止し、新しい設定で起動します。

変更して再起動する必要があるディスクのサービスのリストをどのように取得できますか?

私が知る限り、いいえsystemctl list-units --state changed-on-disk。次に、良いアイデアは、次のような薄暗いスクリプトでした。

systemctl list-units --type service --no-legend | awk '{ print $1 }' | while read -r service; do
    if systemctl status "$service" -n 0 | grep 'changed on disk' -q; then
        echo "$service
    fi
done

ただし、これは誰かが実行するまでのみ機能しますsystemctl daeomon-reload。それ以来、警告が消え、実行中のサービスがディスクの構成と一致するかどうかを検出する方法がないようです。

もちろん、すべてを再開することもできますが、そうすると不要なダウンタイムが発生します。

それでは、最良のアプローチは何ですか?

ベストアンサー1

おすすめ記事