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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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