Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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?

share|improve this question

5 Answers 5

up vote 53 down vote accepted

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

share|improve this answer
    
Exactly what I was looking for, thanks! –  Anders Lindahl Dec 10 '09 at 10:00
7  
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 '12 at 7:50

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.

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

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).

share|improve this answer

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.

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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