Как 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.


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.