Comment Ubuntu garde-t-elle trace de l'indicateur «Redémarrage du système requis» dans motd?

78

J'ai quelques serveurs Ubuntu (8.10, 9.10) configurés pour installer automatiquement les mises à jour de sécurité. Parfois, ces mises à jour nécessitent un redémarrage du système, et cette chaîne est indiquée dans motd:

*** System restart required ***

Pour obtenir une notification à ce sujet, j’ai l’intention d’écrire un test Nagios pour surveiller si le serveur nécessite un redémarrage. Alors, ma question:

Existe-t-il un meilleur moyen que d'analyser /etc/motdpour savoir si un redémarrage est nécessaire?

Anders Lindahl
la source

Réponses:

95

Vérifiez la présence de /var/run/reboot-required.

Dan Carley
la source
17
Remarque: pour les systèmes Debian, /var/run/reboot-requiredne sont créés que si le update-notifier-commonpaquet est installé.
Peter V. Mørch
7
Notez que cela update-notifier-commona été supprimé dans Debian Jessie. unattended-upgradesinclut maintenant un script simple /etc/kernel/postinst.d/unattended-upgradesqui touches le fichier. reboot-notifierest un autre petit paquet compatible avec le format de update-notifier-common.
Ypid
Vous pouvez également vouloir vérifier vos processus en cours d'exécution pour voir si un redémarrage a déjà été initié. Par exemple, les mises à niveau sans assistance ont la possibilité de spécifier une heure de redémarrage; jusqu'à ce moment, la méthode ci-dessus continuera d'indiquer qu'un redémarrage est nécessaire, même s'il en a déjà été initié.
DylanYoung
37

Le script qui génère la partie requise de redémarrage de motd est / usr / lib / update-notifier / update-motd-reboot-required, qui contient:

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

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

Votre vérification nagios pourrait vérifier l’existence de / var / run / reboot-required.

Richard Holloway
la source
2
+1 pour montrer dans quel fichier il se trouve
Wayne
ce script shell ne génère rien. Il affiche le contenu s'il existe
Scott
27

De plus, le fichier '/var/run/reboot-required.pkgs' répertorie les packages qui ont demandé le redémarrage. Par exemple:

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

Sur Ubuntu Lucid (10.4).

Daniel
la source
Freaking merci oh mon dieu ça m'a tellement manqué!
Lapshin Dmitry
8

Les paquets Debian et Ubuntu peuvent déclencher la création de /var/run/reboot-required*dans leur postinstfichier en exécutant le script d'assistance/usr/share/update-notifier/notify-reboot-required

Ainsi, la manière "officielle" de traiter les redémarrages est gérée par le mainteneur du paquet. Je le faisais auparavant dans un script en comparant le temps initialisé avec mtimes dans / boot.

chrishiestand
la source
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
la source