I have a few Ubuntu servers (8.10, 9.10) that is set to automatically install security updates. Some times these updates requires a restart of the system, and this string is shown in motd:

*** System restart required ***

To get a notice about these, I plan to write a Nagios test to monitor if the server is in need of a reboot. So, my question:

Is there a better way than parsing /etc/motd to find out if a reboot is needed?

link|improve this question
feedback

5 Answers

up vote 31 down vote accepted

Check for the presence of /var/run/reboot-required.

link|improve this answer
Exactly what I was looking for, thanks! – Anders Lindahl Dec 10 '09 at 10:00
1  
Note: for debian systems, /var/run/reboot-required does not get created unless the update-notifier-common package is installed. – Peter V. Mørch Jan 27 at 7:50
feedback

The script that generates the reboot required part of motd is /usr/lib/update-notifier/update-motd-reboot-required which contains:

#!/bin/sh -e
#
# helper for update-motd

if [ -f /var/run/reboot-required ]; then
        cat /var/run/reboot-required
fi

Your nagios check could check for the existence of /var/run/reboot-required.

link|improve this answer
+1 for showing which file this is located in – Wayne Dec 10 '09 at 11:06
feedback

Additionally the file '/var/run/reboot-required.pkgs' lists the packages that requested the reboot. For example:

$ cat /var/run/reboot-required.pkgs 
linux-image-2.6.32-28-generic
dbus
$

On Ubuntu Lucid (10.4).

link|improve this answer
feedback

Debian and Ubuntu packages can trigger the creation of /var/run/reboot-required* in their postinst file by executing the helper script /usr/share/update-notifier/notify-reboot-required

Thus the "official" way to process reboots is handled by the package maintainer. I have been doing it previously in a script by comparing time booted against mtimes in /boot.

link|improve this answer
feedback
#!/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
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.