当您在 Ubuntu Desktop 中安装某些更新(例如新内核)时,您会收到需要重新启动的指示(在 Lucid 中,注销图标变为红色)。
如何从命令行检查 Ubuntu服务器是否需要重新启动?
我可以 grep 中的“需要系统重启” /etc/motd
,但我想要一个更优雅的解决方案。另外,我想要一个适用于旧版本的解决方案,例如 Hardy (8.04 LTS)。
当您在 Ubuntu Desktop 中安装某些更新(例如新内核)时,您会收到需要重新启动的指示(在 Lucid 中,注销图标变为红色)。
如何从命令行检查 Ubuntu服务器是否需要重新启动?
我可以 grep 中的“需要系统重启” /etc/motd
,但我想要一个更优雅的解决方案。另外,我想要一个适用于旧版本的解决方案,例如 Hardy (8.04 LTS)。
您可以简单地检查文件是否
/var/run/reboot-required
存在。例如,如果您不需要重新启动,其中任何一个都会告诉您“没有这样的文件”或“找不到文件”,否则(如果您需要重新启动)该文件将存在并且这些命令将显示有关该文件的信息:
在 bash 脚本中,您可以使用:
在软件包 debian-goodies 中有一个名为的命令
checkrestart
,它非常有用。它的输出可以帮助您避免完全重启。它告诉您哪些正在运行的应用程序加载了在应用程序运行时升级的共享库。然后手动重新启动应用程序和服务并避免完全重新启动。但是,对内核升级没有帮助。
通常如果文件
存在你应该重新启动。您可以通过在 gnome-terminal 中使用这个简单的命令来查看该文件是否存在。
除了其他人编写的最直接的方法外,还有一个方便的指示,如果您使用byobu - 一组使 GNU 屏幕更加用户友好的脚本。它在屏幕底部显示一组信息,其中可能包括是否需要重新启动 - 以及更新是否可用、时间、正常运行时间、使用的内存......
在此屏幕截图中,您可以从
199!
带有红色背景的底行看到有 199 个可用更新。A!!
表示有些是安全更新。前台的菜单正在选择应显示哪些状态通知。如果需要重新启动,则这将由
(R)
下方栏中显示的符号指示,该符号带有蓝色背景上的白色文本。更多细节和其他指标可以在byobu 手册页中阅读。如果您安装了 reboot-notifier 或 update-notifier-common 软件包,那么您将获得文件 /var/run/reboot-required 和 /var/run/reboot-required.pkgs
reboot-notifier在 Ubuntu Wily 和 Xenial 中更新。Debian 伸展,但在 jessie-backports
update-notifier-common较旧,在所有 Ubuntu 版本中,包括 Xenial 和 Debian Wheezy。不在 Debian Stretch 或 Jessie 中。
( https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/上的 reboot-notifier 包有一些背景 )
如果您没有安装这些软件包,那么您可以将安装的 linux 软件包的版本与运行的版本进行比较:
在这里可以看到最新安装的内核是3.16.7-ckt20-1+deb8u4,但是运行的内核是3.16.7-ckt20-1+deb8u3。所以这个系统需要重启。u4 vs u3 就在最后。
您可能需要滚动上面的框。在 /proc/version 中,重要的是行尾附近的版本。
非常小的版本代码更改是 Debian 安全内核更新的典型特征。
需要重启
另一种选择是安装
needrestart
软件包。即使在内核升级后安装了needrestart,似乎也能正常工作。
该
/etc/motd
文件从文件中获取有关是否需要重新启动的信息/var/run/reboot-required
。cat /etc/motd
您可以使用命令在终端中检查此文件的内容我将以下内容添加到我的 .bash-aliases 文件中:
似乎比为这个相对简单的任务安装包更简单。然后我就跑:
穷人的解决方法:
注意:方括号里面有空格的三种情况应该是“[ <space> <tab> ]”。
不是对这个问题的回答,而是对几个回答的警告:
/var/run/reboot-required
不是实际是否需要重新启动的可靠来源。简单测试:当新内核可用时,安装它,重新启动。重新启动后,运行
apt autoremove
以摆脱一些不再需要的旧内核。运行后,它会指出需要重新启动,这完全是胡说八道。如果你使用 nagios:
只需更改警告/暴击的时间(以秒为单位)