我如何知道是否需要运行systemctl守护进程重新加载

有没有办法知道当前运行的configuration是否过时? 有没有办法查看当前正在运行的configuration并将其与文件进行比较?

在运行重装之前,知道运行configuration是什么是非常有用的。 如果该命令会告诉我它是否实际更新了configuration,这也很有价值。

您可以通过命令systemctl show <unit>.service检查加载的单元。 据我所知,没有工具来检查单位文件的变化。

你也可以for var in $(systemctl | grep running | awk '{print $1}'); do systemctl status $var | grep "changed on disk" | grep ".service"; done运行这个bash命令for var in $(systemctl | grep running | awk '{print $1}'); do systemctl status $var | grep "changed on disk" | grep ".service"; done for var in $(systemctl | grep running | awk '{print $1}'); do systemctl status $var | grep "changed on disk" | grep ".service"; done 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. 

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}')