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


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 Ubuntu serveur nécessite un redémarrage?

Je pourrais grep pour "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).


219
2017-07-28 21:49


origine


Si vous maintenez le serveur, vous développerez rapidement un sens si la mise à jour nécessite un redémarrage. La plupart des mises à jour ne nécessitent aucun redémarrage ou redémarrage du service (ce qui devrait être fait automatiquement). - eXlin


Réponses:


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

Par exemple, l'un de ces éléments vous indiquerait "aucun fichier de ce type" ou "fichier non trouvé" si vous n'avez pas besoin de redémarrer, sinon (si vous devez redémarrer), le fichier existe et ces commandes afficheront 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

257
2017-07-28 22:02



Cela fonctionne, et ça marche aussi sur Hardy. (Ne fonctionne pas sur Dapper - 6.06 - que j'ai toujours sur une machine. Difficile.) Incidemment, le fichier / var / run / reboot-required est créé par / usr / share / update-notifier / notify-reboot -required qui est appelé à partir des scripts de maintenance de différents packages. - Marius Gedminas
Cela fonctionnerait aussi sur Dapper si j'installais le paquet update-notifier, sauf qu'il veut que 120 Mo de données GNOME soient stockés sur mon ancien serveur. - Marius Gedminas
Mieux vaut installer update-notifier-common, il ne dépend d'aucune interface graphique (mais n'existe pas pour Dapper). - Marius Gedminas
FWIW, update-notifier-common n'est pas installé par défaut sur le serveur Lucid. - Marius Gedminas
Merci! et le fichier /var/run/reboot-required.pkgs va lister les paquets qui nécessitent le redémarrage. - nealmcb


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.


39
2017-09-09 14:51



Comment peut-il m'éviter un redémarrage complet? - Oxwivi
Il vous indique quelles applications en cours d'exécution ont chargé des bibliothèques partagées qui ont été mises à niveau pendant l'exécution de l'application. Vous redémarrez ensuite les applications et les services manuellement et évitez un redémarrage complet. Cela ne vous aide pas avec les mises à niveau du noyau. - aquaherd
Cela devrait être la meilleure réponse. Très utile. OpenSUSE a un outil intégré (et vous aide également à le faire fonctionner). Shame Ubuntu va juste "redémarrer, redémarrer". Par exemple colord avait besoin d'un redémarrage ici. Par conséquent, pas besoin de redémarrer. - Shiki
@aquaherd Commentaire très utile - pourrait-il être utile de l'intégrer dans votre réponse? - Duncan Jones


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

32
2017-07-28 21:59



Ce fichier ne semble plus avoir été créé depuis le update-notifier-common utilisé pour le créer. - Scott


De même que les méthodes les plus directes écrites par d’autres, il existe une indication pratique si vous utilisez byobu - un ensemble de scripts pour rendre l'écran GNU un peu plus convivial. Il affiche un ensemble d'informations en bas de l'écran, pouvant indiquer si un redémarrage est nécessaire ou non, si des mises à jour sont disponibles, l'heure, la disponibilité, la mémoire utilisée ...

Dans cette capture d'écran, vous pouvez voir de la 199! sur la ligne du bas avec le fond rouge qu'il y a 199 mises à jour disponibles, et le ! 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 fond bleu. Plus de détails et d’autres indicateurs peuvent être consultés dans le byobu page de manuel.

byobu screenshot


17
2017-07-29 17:59





le /etc/motd fichier obtient ses informations sur si un redémarrage est requis de /var/run/reboot-required fichier.

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


9
2017-07-28 21:53



update-notifier-common utilisé pour créer ceci mais plus maintenant - Scott


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'

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

you@somewhere:~$ rr
No reboot needed
you@somewhere:~$ 

6
2017-12-16 13:22





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

redémarrer-notifier est plus récent dans Ubuntu Wily et Xenial. Stretch Debian, mais dans Jessie-Backports

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

(Il y a un arrière-plan du paquet reboot-notifier à https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/  )

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

tim@tramp:~$ 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)
tim@tramp:~$ more /proc/version
Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (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 proche de la fin de la 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 needrestart paquet.

sudo apt-get install needrestart
sudo needrestart -k

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


5
2018-03-06 21:48



Comment votre premier paragraphe correspond-il aux versions d'Ubuntu? - muru
Bon point. Merci. J'ai passé tellement de temps à tester et à essayer les paquets qui me manquaient. Je me suis efforcé de clarifier et d’inclure les informations sur les paquets Ubuntu. - Tim Bray
Au 8.04, après une mise à jour nécessitant un redémarrage, le Cog devenait rouge. Comment récupérer ce comportement? - PenguinCSC
Ubuntu 14.04, je reçois dpkg-query: no packages found matching linux-image-* - the_nuts
Unknown option: k dans Ubuntu 14.04. - Cees Timmerman


Pas une réponse à la question, mais une mise en garde concernant plusieurs des réponses: /var/run/reboot-required est ne 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 se débarrasser de certains noyaux anciens, qui ne sont plus nécessaires. Une fois que vous avez exécuté cela, il indiquera qu'un redémarrage est nécessaire, ce qui est un non-sens complet.


-1
2017-09-14 07:09



Eh bien, supprimer un noyau génère à nouveau votre fichier de configuration grub, après quoi il est probablement préférable de le redémarrer pour vérifier que vous pouvez toujours démarrer. Au moins, c'est comme ça que je justifie cette fonctionnalité. - Marius Gedminas