W jaki sposób Ubuntu śledzi flagę „Wymagany restart systemu” w motd?

77

Mam kilka serwerów Ubuntu (8.10, 9.10) skonfigurowanych do automatycznego instalowania aktualizacji zabezpieczeń. Czasami te aktualizacje wymagają ponownego uruchomienia systemu, a ten ciąg jest wyświetlany w motd:

*** System restart required ***

Aby otrzymać powiadomienie o tym, planuję napisać test Nagios w celu monitorowania, czy serwer wymaga ponownego uruchomienia. Więc moje pytanie:

Czy istnieje lepszy sposób niż analiza, /etc/motdaby dowiedzieć się, czy konieczne jest ponowne uruchomienie?

Anders Lindahl
źródło

Odpowiedzi:

94

Sprawdź obecność /var/run/reboot-required.

Dan Carley
źródło
17
Uwaga: w systemach Debian /var/run/reboot-requirednie jest tworzony, chyba że update-notifier-commonpakiet zostanie zainstalowany.
Peter V. Mørch
7
Uwaga, update-notifier-commonktóra została usunięta w Debian Jessie. unattended-upgradesteraz zawiera prosty skrypt, /etc/kernel/postinst.d/unattended-upgradesktóry touches plik. reboot-notifierto kolejny mały pakiet, który jest zgodny z formatem update-notifier-common.
ypid 21.01.16
Możesz także sprawdzić uruchomione procesy, aby sprawdzić, czy ponowne uruchomienie zostało już zainicjowane. Na przykład aktualizacje nienadzorowane mają opcję określenia czasu ponownego uruchomienia; do tego czasu powyższa metoda będzie nadal wskazywać, że wymagane jest ponowne uruchomienie komputera, nawet jeśli zostało już zainicjowane.
DylanYoung
37

Skrypt generujący wymaganą ponowną aktywację części motd to / usr / lib / update-notifier / update-motd-reboot-wymagany, który zawiera:

#!/bin/sh -e
#
# helper for update-motd

if [ -f /var/run/reboot-required ]; then
        cat /var/run/reboot-required
fi

Twoja kontrola nagios może sprawdzić, czy istnieje / var / run / reboot-wymagany.

Richard Holloway
źródło
2
+1 za pokazanie, w którym pliku się znajduje
Wayne,
ten skrypt powłoki nic nie generuje. Wyświetla zawartość, jeśli istnieje
Scott
26

Ponadto plik „/var/run/reboot-required.pkgs” zawiera listę pakietów, które zażądały ponownego uruchomienia. Na przykład:

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

Na Ubuntu Lucid (10.4).

Daniel
źródło
Cholera, dziękuję, o mój boże, tak bardzo za tym tęskniłem!
Lapshin Dmitry
8

Pakiety Debian i Ubuntu mogą wyzwalać tworzenie /var/run/reboot-required*ich postinstpliku, wykonując skrypt pomocniczy/usr/share/update-notifier/notify-reboot-required

Tak więc „oficjalnym” sposobem przetwarzania restartów jest opiekun pakietu. Robiłem to wcześniej w skrypcie, porównując czas rozruchu z mtimes w / boot.

chrishiestand
źródło
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
źródło