디스크에서 변경된 시스템 서비스를 찾는 방법은 무엇입니까?

디스크에서 변경된 시스템 서비스를 찾는 방법은 무엇입니까?

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. 그 이후에는 경고가 사라지고 실행 중인 서비스가 디스크의 구성과 일치하는지 여부를 감지할 방법이 없는 것 같았습니다.

물론 모든 것을 다시 시작할 수도 있지만 그렇게 하면 불필요한 가동 중지 시간이 발생하게 됩니다.

그렇다면 가장 좋은 접근 방식은 무엇입니까?

관련 정보