Как Ubuntu отслеживает флаг «Требуется перезагрузка системы» в motd?

78

У меня есть несколько серверов Ubuntu (8.10, 9.10), которые настроены на автоматическую установку обновлений безопасности. Иногда эти обновления требуют перезагрузки системы, и эта строка отображается в motd:

*** System restart required ***

Чтобы получить уведомление об этом, я планирую написать тест Nagios, чтобы отслеживать, нуждается ли сервер в перезагрузке. Итак, мой вопрос:

Есть ли лучший способ, чем анализ, /etc/motdчтобы узнать, нужна ли перезагрузка?

Андерс Линдал
источник

Ответы:

95

Проверьте наличие /var/run/reboot-required.

Дэн Карли
источник
17
Примечание: для систем Debian /var/run/reboot-requiredне создается, если update-notifier-commonпакет не установлен.
Питер В. Мёрч
7
Обратите внимание, что update-notifier-commonэто было удалено в Debian Jessie. unattended-upgradesТеперь включает в себя простой скрипт, /etc/kernel/postinst.d/unattended-upgradesкоторый touchфайл. reboot-notifierэто еще один небольшой пакет, который совместим с форматом update-notifier-common.
ypid
Вы также можете проверить запущенные процессы, чтобы увидеть, была ли уже начата перезагрузка. Например, в unattended-upgrades есть возможность указать время для перезагрузки; до этого времени описанный выше способ будет продолжать указывать, что требуется перезагрузка, даже если она уже была инициирована.
DylanYoung
37

Сценарий, который генерирует обязательную перезагрузку для части 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.

Ричард Холлоуэй
источник
2
+1 за то, чтобы показать, в каком файле это находится
Уэйн
этот сценарий оболочки ничего не генерирует. Он отображает содержимое, если оно существует
Скотт
27

Кроме того, в файле /var/run/reboot-required.pkgs перечислены пакеты, которые запросили перезагрузку. Например:

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

На Ubuntu Lucid (10,4).

Даниил
источник
Офигенное спасибо, Боже мой, я так по этому скучал!
Лапшин Дмитрий
8

Пакеты Debian и Ubuntu могут инициировать создание /var/run/reboot-required*в своем postinstфайле, выполняя сценарий помощника/usr/share/update-notifier/notify-reboot-required

Таким образом, «официальный» способ обработки перезагрузок обрабатывается сопровождающим пакета. Я делал это ранее в сценарии, сравнивая время загрузки с mtimes в / boot.

chrishiestand
источник
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
Damian
источник