Eu executo o seguinte comando:
systemctl status tomcat10.service
#and get the following warning:
Warning: The unit file, source configuration file or drop-ins of tomcat10.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Se eu olhar para o arquivo da unidade
ls -l /usr/lib/systemd/system/tomcat10.service
-rw-r--r-- 1 root root 1161 Jul 2 12:36 /usr/lib/systemd/system/tomcat10.service
O arquivo foi modificado ou pelo menos modificado.
No entanto, mesmo se eu comparar a configuração atual em execução usando alguma engenhoca como esta:
systemctl cat tomcat10.service | diff /usr/lib/systemd/system/tomcat10.service -
# Warning: tomcat10.service changed on disk, the version systemd has loaded is
outdated.
# This output shows the current version of the unit's original fragment and drop-in files.
# If fragments or drop-ins were added or removed, they are not properly reflected in this output.
# Run 'systemctl daemon-reload' to reload units.
0a1
> # /usr/lib/systemd/system/tomcat10.service
Mas neste caso não consigo ver nada diferente e a mensagem me confunde, estou realmente comparando o congig em execução com a configuração atual? e se eu não sou nada como mudança, então por que o systemd está me pedindo um daemon-reload?
Então, minha pergunta é como posso comparar de forma confiável a configuração da unidade systemctl em execução com a configuração de inicialização atual?
E de forma mais ampla, como saber o que mudou ao fazer ou está prestes a mudar quando/antes de digitar systemctl daemon-reload
.
Sua suspeita está correta:
systemctl cat
sempre mostra o conteúdo dos arquivos da unidade relevantes como eles estão atualmente no disco, e não como estão atualmente na visualização do sistema pelo systemd. Você pode ver o último usandosystemctl show
, mas isso lhe dará as propriedades gerais mescladas de uma unidade, sem nenhuma indicação de onde vêm os valores (padrões, unidades do sistema, substituições, etc.).systemctl
avisa que os arquivos da unidade foram alterados porque a hora da última modificação é mais recente que a hora da modificação quando foram carregados; isso é tudo que o systemd compara .Não conheço uma maneira simples de determinar o que mudará no próximo arquivo
daemon-reload
. Você pode descobrir isso comparandosystemctl show
a saída do com o conteúdo atual de todos os arquivos unitários correspondentes, mas isso pode acabar sendo complicado.