当升级库文件后,那些使用该库的服务需要重启后才会真正使用该库文件中的内容。一个常用的方法是直接重启系统,这样所有服务在启动时自然使用的是最新库的内容,但是作为服务器是不可能允许随意重启的,那么在不重启的情况下如何找出受到影像的服务呢?
这里有个简单的方法:
sudo lsof -d 'DEL' | grep 'lib' | cut -f 1 -d ' ' | sort -u
原理就是用 lsof 查出所有 FD 为 DEL(已删除的映射文件)
且路径中带 lib
的命令。然后就可以使用 systemctl restart
重启服务了。
不过 systemd
本身作为1号进程不能通过 systemctl restart
来进行重启,而需要使用 sudo systemctl daemon-reexec
来重启。
当然,我们如果修改了某些系统文件,如/etc/ssh/sshd_config 、/etc/systemd/user.conf 或者、/ect/systemd/system.conf 等文件,也可以执行
systemctl daemon-reexec