问题描述
我有一些Ubuntu服务器(8.10、9.10)被设置为自动安装安全更新。有时,这些更新需要重新启动系统,并且此字符串显示在motd
中:
*** System restart required ***
为了获得有关这些消息的通知,我计划编写一个Nagios测试来监视服务器是否需要重新启动。所以,我的问题是:
是否有比解析/etc/motd
更好的方法来找出是否需要重新启动?
最佳方案
检查是否存在/var/run/reboot-required
。
次佳方案
生成motd的需要重新启动的部分的脚本是/usr /lib /update-notifier /update-motd-reboot-required,其中包含:
#!/bin/sh -e
#
# helper for update-motd
if [ -f /var/run/reboot-required ]; then
cat /var/run/reboot-required
fi
您的nagios检查可以检查是否存在/var /run /reboot-required。
第三种方案
此外,文件’/var/run/reboot-required.pkgs’列出了请求重新启动的软件包。例如:
$ cat /var/run/reboot-required.pkgs
linux-image-2.6.32-28-generic
dbus
$
在Ubuntu Lucid(10.4)上。
第四种方案
Debian和Ubuntu软件包可以通过执行帮助脚本/usr/share/update-notifier/notify-reboot-required
来触发postinst
文件中/var/run/reboot-required*
的创建。
因此,程序包维护者将使用”official”处理重启的方式。我以前在脚本中通过比较/boot中的启动时间与mtimes来进行此操作。
第五种方案
#!/bin/bash
if [ ! -f /var/run/reboot-required ]; then
# no reboot required (0=OK)
echo "OK: no reboot required"
exit 0
else
# reboot required (1=WARN)
echo "WARNING: `cat /var/run/reboot-required`"
exit 1
fi