Comment savoir, à partir de la ligne de commande, si la machine nécessite un redémarrage?

217

Lorsque vous installez certaines mises à jour (par exemple, un nouveau noyau) dans Ubuntu Desktop, vous obtenez l’indication qu’un redémarrage est requis (dans Lucid, l’icône de déconnexion devient rouge).

Comment puis-je vérifier, à partir de la ligne de commande, si un serveur Ubuntu nécessite un redémarrage?

Je pourrais grep "Redémarrage du système requis" dans /etc/motd , mais j'aimerais une solution plus élégante. En outre, je veux une solution qui fonctionne dans les anciennes versions, par exemple Hardy (8.04 LTS).

    
posée Marius Gedminas 28.07.2010 - 23:49
la source

8 réponses

253

Vous pouvez simplement vérifier si le fichier /var/run/reboot-required existe ou non.

Par exemple, n’importe lequel de ces fichiers vous indiquerait "pas de tel fichier" ou "fichier introuvable" si vous n’avez pas besoin de redémarrer, sinon (si vous devez redémarrer), le fichier existe et ces commandes afficheraient des informations sur le fichier:

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

Dans un script bash, vous pouvez utiliser:

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
  echo 'reboot required'
fi
    
réponse donnée Weboide 29.07.2010 - 00:02
la source
39

Dans le paquet debian-goodies est une commande nommée checkrestart qui est très utile. Sa sortie peut vous aider à éviter un redémarrage complet.

    
réponse donnée aquaherd 09.09.2011 - 16:51
la source
32

Normalement si le fichier

/var/run/reboot-required 

existe, vous devriez redémarrer. Vous pouvez voir si ce fichier est présent en utilisant cette commande simple dans gnome-terminal.

ls /var/run/reboot-required
    
réponse donnée kone4040 28.07.2010 - 23:59
la source
17

Outre les méthodes les plus directes écrites par d’autres, il existe une indication pratique si vous utilisez byobu - un ensemble de scripts pour créer un écran GNU. un peu plus convivial. Il affiche un ensemble d’informations au bas de l’écran, indiquant si un redémarrage est nécessaire ou non, si des mises à jour sont disponibles, le temps, la disponibilité, la mémoire utilisée ...

Dans cette capture d'écran, vous pouvez voir à partir de 199! sur le fond rouge que 199 mises à jour sont disponibles et que ! signifie que certaines sont des mises à jour de sécurité. Le menu au premier plan sélectionne les notifications d'état à afficher.

Si un redémarrage est requis, cela sera indiqué par le symbole (R) affiché dans la barre inférieure avec un texte blanc sur un fond bleu. Vous trouverez plus de détails et d’autres indicateurs dans la page de manuel byobu .

    
réponse donnée Hamish Downer 29.07.2010 - 19:59
la source
9

Le fichier /etc/motd obtient ses informations indiquant si un redémarrage est requis à partir du fichier /var/run/reboot-required .

Vous pouvez vérifier le contenu de ce fichier dans le terminal en utilisant la commande cat /etc/motd

    
réponse donnée ajmitch 28.07.2010 - 23:53
la source
6

J'ai ajouté les éléments suivants à mon fichier d'alias .bash:

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

Cela semblait plus simple que d'installer un paquet pour cette tâche relativement simple. Alors je viens de courir:

[email protected]:~$ rr
No reboot needed
[email protected]:~$ 
    
réponse donnée Capricorn1 16.12.2016 - 14:22
la source
5

Si les paquets reboot-notifier ou update-notifier-common sont installés, vous obtenez les fichiers / var / run / reboot-required et /var/run/reboot-required.pkgs

notifier le redémarrage est plus récent dans Ubuntu Wily et Xenial. Tronçon de Debian, mais dans jessie-backports

update-notifier-common est plus ancien dans toutes les versions d'Ubuntu, y compris Xenial et Debian Wheezy. Pas dans Stretch Debian ou Jessie.

(Il existe un arrière-plan du paquet reboot-notifier à lien )

Si ces paquetages ne sont pas installés, vous pouvez comparer la version du paquetage linux installée avec la version en cours d’exécution:

[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)

Vous pouvez voir ici que le dernier noyau installé est 3.16.7-ckt20-1 + deb8u4 mais que le noyau en cours d’exécution est 3.16.7-ckt20-1 + deb8u3. Donc, ce système a besoin d'un redémarrage. Le U4 vs U3 à la fin.

Vous devrez peut-être faire défiler la boîte ci-dessus. Dans la version / proc /, c'est la version en fin de ligne qui compte.

Le changement de code de version très mineur est typique d’une mise à jour du noyau de sécurité Debian.

needrestart

Une autre option consiste à installer le package needrestart .

sudo apt-get install needrestart
sudo needrestart -k

Semble fonctionner même si needrestart a été installé après la mise à niveau du noyau.

    
réponse donnée Tim Bray 06.03.2016 - 22:48
la source
-1

Pas une réponse à la question, mais une mise en garde concernant plusieurs réponses: /var/run/reboot-required n’est pas une source fiable de la nécessité ou non d’un redémarrage.

Test simple: lorsqu'un nouveau noyau devient disponible, installez-le, redémarrez. Après le redémarrage, exécutez apt autoremove pour éliminer certains noyaux anciens, devenus inutiles. Après l'avoir exécuté, il sera indiqué qu'un redémarrage est nécessaire, ce qui est un non-sens complet.

    
réponse donnée tink 14.09.2017 - 09:09
la source

Lire d'autres questions sur les étiquettes