Notwendigkeit des Neustarts ermitteln
Hinweis:
Dieses Howto wurde von noisefloor erstellt. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich gegebenenfalls zusätzlich an den/die Verfasser des Howtos.
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Problembeschreibung¶
Betreibt man einen Rechner im 24/7 Dauereinsatz und hat den Rechner so eingerichtet / konfiguriert, dass Paketupdates automatisch heruntergeladen und installiert werden, muss man trotzdem periodisch prüfen, ob der Rechner nicht einen Neustart benötigt, um die neueren Programmversionen auch zu nutzen (wie z.B. einen aktualisierten Kernel, dbus oder den NetworkManager).
Anleitung¶
Um festzustellen, ob das System einen Neustart nach der Aktualisierung von Paketen benötigt, prüft man einfach, ob die Datei reboot-required im Verzeichnis /var/run vorhanden ist. Dies kann man manuell über ls machen. Wer die Abfrage in einem Shellskript machen möchte, kann dies wie folgt umsetzen:
1 2 3 4 5 6 7 | ... if [ -f /var/run/reboot-required ] then #hier Befehle einfügen etc., Beispiel: echo "$USER, bitte das System neu starten!" fi ... |
Der Inhalt der Datei /var/run/reboot-required lautet immer "*** System restart required ***".
Wer wissen möchte, welches Paket bzw. welche Pakete den Neustart verlangen, der kann sich den Inhalt der Datei /var/run/reboot-required.pkgs ausgeben lassen. Man erhält die Auflistung aller Pakete, die den Neustart benötigen. Beispielausgabe:
libc6 dbus dbus network-manager linux-image-5.15.0-41-generic linux-base
Technisch funktioniert das Anlegen der beiden Datei so, dass das postinst Skript des Pakets (welches nach erfolgreicher Installation des Programms bzw. der Dateien) die Datei /usr/share/update-nofier/notify-reboot-required aufruft, die dann die beiden Dateien anlegt und den Namen des Pakets in die .pkgs Datei schreibt.
Neustart von Programmen¶
Im Verzeichnis /var/run können auch noch von weiteren Programmen, die über die Paketverwaltung installiert sind und die einen Neustart des Programms (und nicht des Systems) benötigen, entsprechende Dateien liegen. Z.B. im Falle des Webbrowsers Firefox die Datei firefox-restart-required. Es existieren keine Dateien für Pakete, die als snap installiert sind.
E-Mail-Benachrichtigung¶
Man kann sich auf Basis dieser Anleitung auch einen automatischen Benachrichtigungsdienst per E-Mail einrichten. Hierfür eine Datei im gewünschten Anacron-Verzeichnis anlegen. Empfohlen wird das Verzeichnis /etc/cron.daily, wodurch einmal täglich gecheckt wird, ob ein Neustart ansteht. Voraussetzung ist, dass das System Mails verschicken kann, zum Beispiel per Postfix.
1 2 3 4 5 | #!/usr/bin/env bash if [ -f /var/run/reboot-required ]; then echo "Ein Neustart für Deinen Server $HOSTNAME ist erforderlich!" | mail -s "Reboot erforderlich" EMPFÄNGER@EXAMPLE.COM fi |
Anstatt EMPFÄNGER@EXAMPLE.COM
bitte die Email-Adresse angeben, an die die Benachrichtigung gehen soll.