87

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?

5 Answers 5

101

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

3
  • 17
    Note: for debian systems, /var/run/reboot-required does not get created unless the update-notifier-common package is installed. Jan 27, 2012 at 7:50
  • 7
    Note that update-notifier-common has been removed in Debian Jessie. unattended-upgrades now includes a simple script /etc/kernel/postinst.d/unattended-upgrades which touches the file. reboot-notifier is another small package which is compatible with the format of update-notifier-common.
    – ypid
    Jan 21, 2016 at 8:45
  • You may also want to check your running processes to see if a reboot has already been initiated. For instance, unattended-upgrades has the option of specifying a time for rebooting; until this time, the method above will continue to indicate that a reboot is required, even though one has already been initiated.
    – DylanYoung
    Jun 28, 2016 at 18:42
39

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.

2
  • 2
    +1 for showing which file this is located in
    – Wayne
    Dec 10, 2009 at 11:06
  • 1
    that shell script isn't generating anything. It displays the contents if it exists
    – Scott
    Jul 5, 2018 at 15:09
31

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

1
  • Freaking thank you oh my god I missed that so much! Jul 2, 2017 at 21:25
13

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.

0
4
#!/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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .