我有 4 台服务器,使用 Debian Wheezy OS。我安装了 Apticron,它可以通知我有关更新的信息。Debian 更新非常频繁,以至于当我完成 4 台服务器中的最后一台的更新时,我会收到有关第一台服务器的新更新的新电子邮件。我尝试在收到通知时更新所有服务器,但我不知道是否需要重新启动服务器。我读到如果目录/var/run
包含文件,reboot-required
我必须重新启动服务器。但我从未在 中看到过此文件/var/run
。我怎么知道何时需要重新启动?如果不需要,我不想每次安装新更新时都重新启动服务器。
我知道如果我更新 PHP 或 MySQL 等,我不需要重新启动服务器,但更新通常包含许多lib...
。
以下是 9 条更新(我本周收到的)。
krb5-locales 1.10.1+dfsg-5+deb7u3
libdbus-1-3 1.6.8-1+deb7u6
libgssapi-krb5-2 1.10.1+dfsg-5+deb7u3
libk5crypto3 1.10.1+dfsg-5+deb7u3
libkrb5-3 1.10.1+dfsg-5+deb7u3
libkrb5support0 1.10.1+dfsg-5+deb7u3
libruby1.8 1.8.7.358-7.1+deb7u2
libxml2 2.8.0+dfsg1-7+wheezy3
ruby1.8 1.8.7.358-7.1+deb7u2
我不知道什么是libkrb
、libgssapi
等等。如何检测是否需要重启?请不要建议安装 UnattendedUpgrades 让服务器自动更新,因为如果更新不正确,这可能会导致网站离线。
答案1
安装debian-goodies
包提供checkrestart
。
它显示哪些进程正在使用以前安装的旧版本的库。
当无法从列表中删除所有进程时,
可能需要重新启动。
此外,安装needrestart
软件包也可能有帮助,正如本文评论中所指出的那样,也可以在其中找到debian 软件包搜索结果
检查库升级后需要重新启动哪些守护进程
一般来说,考虑在内核更新后重新启动(正如 YuKYuk 所指出的)!
答案2
cat /var/run/reboot-required.pkgs
看看'service' waiting for a reload
。无需重启,只需升级内核(和 Windows :) )。
或者在 Debian 上:lsof | grep lib | grep DEL
答案3
补充一下,我的服务器也遇到了同样的问题,我编写了一个更新脚本,按照 YuKYuK 的建议检查 /var/run/:
test -f /var/run/reboot-required && echo rebooting && sudo reboot
答案4
查看需要重启。 看https://linux-audit.com/determine-processes-which-need-a-restart-with-checkrestart-needrestart/
我首先在建议 checkrestart 的答案的评论中发布了 needrestart 的提示,但后来却想在单独的答案中写下这一点。