it-swarm-eu.dev

Wie kann ich über die Befehlszeile feststellen, ob für den Computer ein Neustart erforderlich ist?

Wenn Sie bestimmte Updates (z. B. einen neuen Kernel) in Ubuntu Desktop installieren, erhalten Sie einen Hinweis, dass ein Neustart erforderlich ist (in Lucid wird das Abmeldesymbol rot).

Wie kann ich von der Kommandozeile aus prüfen, ob ein Ubuntu Server einen Neustart erfordert?

Ich könnte in /etc/motd nach "Systemneustart erforderlich" suchen, hätte aber gerne eine elegantere Lösung. Außerdem möchte ich eine Lösung, die in älteren Releases funktioniert, z. Hardy (8,04 LTS).

250
Marius Gedminas

Sie können einfach überprüfen, ob die Datei /var/run/reboot-required existiert oder nicht.

Beispielsweise würde eine dieser Optionen "Keine solche Datei" oder "Datei nicht gefunden" anzeigen, wenn Sie nicht neu starten müssen. Andernfalls (wenn Sie neu starten müssen) würde die Datei vorhanden sein und die folgenden Befehle würden Informationen zu der Datei anzeigen:

file /var/run/reboot-required
stat /var/run/reboot-required
ls /var/run/reboot-required

In einem Bash-Skript können Sie Folgendes verwenden:

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
  echo 'reboot required'
fi
283
Weboide

Im Paket debian-goodies ist ein Befehl namens checkrestart enthalten, der sehr nützlich ist. Die Ausgabe kann Ihnen dabei helfen, einen vollständigen Neustart zu vermeiden.

Hier erfahren Sie, welche laufenden Anwendungen gemeinsam genutzte Bibliotheken geladen haben, die während der Ausführung der Anwendung aktualisiert wurden. Anschließend starten Sie die Anwendungen und Dienste manuell neu und vermeiden einen vollständigen Neustart. Hilft jedoch nicht bei Kernel-Upgrades.

44
aquaherd

Normalerweise ist die Datei

/var/run/reboot-required 

existiert, sollten Sie neu starten. Sie können feststellen, ob diese Datei vorhanden ist, indem Sie diesen einfachen Befehl in gnome-terminal verwenden.

ls /var/run/reboot-required
33
kone4040

Neben den direktesten Methoden, die von anderen geschrieben wurden, gibt es einen praktischen Hinweis, wenn Sie byob - eine Reihe von Skripten verwenden, um den Bildschirm GNU ein wenig benutzerfreundlicher zu gestalten. Es zeigt eine Reihe von Informationen am unteren Bildschirmrand an, darunter, ob ein Neustart erforderlich ist - zusammen mit der Verfügbarkeit von Updates, der Uhrzeit, der Betriebszeit, dem verwendeten Speicher ...

In diesem Screenshot können Sie anhand des 199! in der unteren Zeile mit dem roten Hintergrund erkennen, dass 199 Updates verfügbar sind. Ein !!bedeutet, dass es sich bei einigen um Sicherheitsupdates handelt . Das Menü im Vordergrund wählt aus, welche Statusbenachrichtigungen angezeigt werden sollen.

Wenn ein Neustart erforderlich ist, wird dies durch das Symbol (R) in der unteren Leiste mit weißem Text auf blauem Hintergrund angezeigt. Weitere Details und andere Indikatoren finden Sie in der byobu man page .

screenshot

17
Hamish Downer

Die /etc/motd -Datei ruft ihre Information darüber, ob ein Neustart erforderlich ist, aus der /var/run/reboot-required -Datei ab.

Sie können den Inhalt dieser Datei im Terminal mit dem Befehl cat /etc/motd überprüfen

9
ajmitch

Ich habe meiner .bash-aliases-Datei Folgendes hinzugefügt:

alias rr='if [ -f /var/run/reboot-required ]; then echo "reboot required"; else echo "No reboot needed"; fi'

Schien einfacher als das Installieren eines Pakets für diese relativ einfache Aufgabe. Dann laufe ich einfach:

[email protected]:~$ rr
No reboot needed
[email protected]:~$ 
7
Capricorn1

Wenn Sie die Pakete reboot-notifier oder update-notifier-common installiert haben, erhalten Sie die Dateien/var/run/reboot-required und /var/run/reboot-required.pkgs

reboot-notifier ist neuer in Ubuntu Wily und Xenial. Debian strecken, aber in Jessie-Backports

update-notifier-common Ist in allen Ubuntu-Versionen einschließlich Xenial und Debian Wheezy älter. Nicht in Debian Stretch oder Jessie.

(Hintergrundinformationen zum Paket "reboot-notifier" finden Sie unter https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/ )

Wenn Sie diese Pakete nicht installiert haben, können Sie die Version des installierten Linux-Pakets mit der Version vergleichen, die ausgeführt wird:

[email protected]:~$ dpkg -l linux-image-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                              Version               Architecture          Description
+++-=================================-=====================-=====================-=======================================================================
ii  linux-image-3.16.0-4-AMD64        3.16.7-ckt20-1+deb8u4 AMD64                 Linux 3.16 for 64-bit PCs
ii  linux-image-AMD64                 3.16+63               AMD64                 Linux for 64-bit PCs (meta-package)
[email protected]:~$ more /proc/version
Linux version 3.16.0-4-AMD64 ([email protected]) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian <b>3.16.7-ckt20-1+deb8u3</b> (2016-01-17)

Sie können hier sehen, dass der zuletzt installierte Kernel 3.16.7-ckt20-1 + deb8u4 ist, der Kernel jedoch 3.16.7-ckt20-1 + deb8u3 ausgeführt wird. Dieses System muss also neu gestartet werden. Die U4 vs U3 direkt am Ende.

Möglicherweise müssen Sie das Feld oben scrollen. In der/proc/-Version ist die Version am Ende der Zeile von Bedeutung.

Die geringfügige Änderung des Versionscodes ist typisch für ein Debian-Sicherheitskernel-Update.

needrestart

Eine andere Option ist die Installation des Pakets needrestart.

Sudo apt-get install needrestart
Sudo needrestart -k

Scheint zu funktionieren, auch wenn nach dem Upgrade des Kernels ein Neustart erforderlich war.

7
Tim Bray

Die Lösung des armen Mannes:

#!/bin/bash
default=$(sed -n 's/^default[   ]*\([0-9][0-9]*\).*/\1/p' /boot/grub/menu.lst | tail -1)
if [ "$default" = "" ]; then default=0; fi

want=$(sed -n 's/^kernel[       ]*\/boot\/vmlinuz-\([^  ]*\).*/\1/p' /boot/grub/menu.lst | sed -n "$((default+1))p")

running=$(uname -r)

if [ "$running" = "$want" ]
then
        : OK, do nothing
else
        echo "Running $running, want $want. Reboot required."
fi

(Hinweis: Die drei Fälle von eckigen Klammern mit Leerzeichen sollten "[<Leerzeichen> <Tabulator>]" sein.)