在 RHEL7 上,运行命令(作为 sudo)needs-restarting
会挂起,而needs-restarting -s
while会needs-restarting -r
在 2 秒内返回。我说的“挂起”是指它需要很长时间,最终我的 SSH 会话会超时。直到最近,它一直运行良好。我该怎么做才能调查这个问题(除非“重新启动就能解决问题”)?
相关手册页:https://man7.org/linux/man-pages/man1/needs-restarting.1.html
请注意,我重启了服务器,然后needs-restarting
在几秒钟内完成了。但这显然并不理想。
答案1
needs-restarting --reboothint
检查少数的安装日期Red Hat 认为需要重启才能生效的软件包. kernel 和 libc,还有 TLS libs 和 systemd。与系统启动时间进行比较,很简单。
needs-restarting
没有重启提示选项的查询会更加密集。搜索每个正在运行的进程的 smap 以查找文件描述符。搜索 rpmdb 以查找所属软件包并检查安装时间与进程启动时间。如果--services
,则搜索进程以查找看起来像 systemd 服务的 cgroup。如果您有大量进程、打开的文件或内存,则速度会很慢。或者如果 rpmdb 位于较慢的存储上。
一个简单的解决方案是,如果有任何软件包更新,则重新启动。证明系统可以在更改后关闭并重新启动是有用的。
选择性地重启服务可以减少重启次数。但是如果陷入困境,您如何找到这些服务needs-restarting
?您上次没有安装内核的更新周期是什么时候?