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