69 votes

Comment puis-je vérifier en ligne de commande si un redémarrage est nécessaire sur RHEL ou CentOS ?

J'utilise CentOS et Red Hat Enterprise Linux sur quelques machines sans l'interface graphique. Comment puis-je vérifier si les mises à jour récemment installées nécessitent un redémarrage ? Dans Ubuntu, j'ai l'habitude de vérifier si /var/run/reboot-required est présent.

75voto

xddsg Points 3144

https://access.redhat.com/discussions/3106621#comment-1196821

N'oubliez pas que vous devrez peut-être redémarrer à cause des mises à jour des bibliothèques de base, du moins s'il s'agit de la glibc (et aussi, les services peuvent devoir être redémarrés après les mises à jour).

Si vous installez le yum-utils vous pouvez utiliser une commande appelée needs-restarting .

Vous pouvez l'utiliser à la fois pour vérifier si un redémarrage complet est nécessaire en raison de mises à jour du noyau ou des bibliothèques centrales (à l'aide de la commande -r ou les services qui doivent être redémarrés (en utilisant l'option -s option).

needs-restarting -r renvoie à 0 si le redémarrage n'est pas nécessaire, et 1 si c'est le cas, il est donc parfait pour être utilisé dans un script.

Un exemple :

root@server1:~> needs-restarting  -r ; echo $?
Core libraries or services have been updated:
  openssl-libs -> 1:1.0.1e-60.el7_3.1
  systemd -> 219-30.el7_3.9

Reboot is required to ensure that your system benefits from these updates.

More information:
https://access.redhat.com/solutions/27943
1

1 votes

Il est intéressant de mentionner qu'au moins le -s nécessite un accès root.

2 votes

Pour Fedora, needs-restarting es un plugin DNF . Il ne supporte pas -r o -s (encore).

0 votes

CentOS 6 ne supporte pas -r soit, et le needs-restarting qu'il a n'est pas assez bon (il ne remarque pas quand un noyau plus récent est disponible).

39voto

alexm Points 491

A propos de la comparaison entre les noyaux installés et les noyaux en cours d'exécution :

#!/bin/bash
LAST_KERNEL=$(rpm -q --last kernel | perl -pe 's/^kernel-(\S+).*/$1/' | head -1)
CURRENT_KERNEL=$(uname -r)

test $LAST_KERNEL = $CURRENT_KERNEL || echo REBOOT

J'espère que cela vous aidera !

3 votes

J'ai d'abord pensé que cela ne fonctionnait pas car il continuait à me dire de redémarrer après l'avoir fait, mais j'ai ensuite découvert que si vous utilisez une instance DigitalOcean, vous devez d'abord changer manuellement le noyau depuis leur panneau de contrôle avant de redémarrer.

0 votes

Y a-t-il une raison pour laquelle le kernel- est supprimée de la sortie de rpm -q ?

1 votes

Le site kernel- doit être supprimée pour la comparer avec la sortie de l'application uname -r qui ne le contient pas.

9voto

GrangerX Points 156

Il peut être utile de vérifier si des fichiers ont été supprimés ou remplacés par la mise à jour, mais si les anciens fichiers sont toujours chargés ou utilisés par des processus actifs.

En fait, lorsque YUM met à jour un fichier qui est utilisé par un processus, le fichier lui-même peut avoir été marqué pour être supprimé, mais le processus continue à utiliser l'ancien fichier puisqu'il a un descripteur de fichier ouvert sur l'inode de l'ancien fichier.

Une commande pour obtenir un compte du nombre d'anciens fichiers encore utilisés :

#lsof | grep "(path inode=.*)" | wc -l

Cette commande vous donnera un compte des fichiers.

Utilisez plutôt ceci pour voir quels fichiers sont réellement utilisés :

#lsof | grep "(path inode=.*)"

Cette commande produira une sortie similaire à ce qui suit sur une boîte mise à jour par YUM :

COMMAND    PID   USER   FD      TYPE DEVICE SIZE/OFF   NODE NAME
sshd      3782   root  mem       REG   8,17          153427 /lib64/libcrypto.so.0.9.8e (path inode=153253)
mysqld    3883  mysql  mem       REG   8,17          153259 /lib64/libcrypt-2.5.so (path inode=153402)
mingetty  4107   root  mem       REG   8,17          153243 /lib64/libc-2.5.so (path inode=153222)
...
etc

0 votes

Est-ce un moyen fiable de détecter les mises à jour du noyau (ce qui m'évite d'avoir à le vérifier également) ?

8voto

Jungkook Points 111

Vous pouvez comparer la sortie de uname -a avec la liste des paquets du noyau installés.

2 votes

Est-ce qu'un noyau différent est la seule raison pour laquelle un serveur linux serait besoin de un reboot ?

1 votes

Normalement, en respectant les processus "normaux" de mise à jour des paquets (up2date, yum, etc.), il ne devrait pas y avoir beaucoup d'autres raisons de redémarrer le système que la mise à jour du noyau.

0 votes

Je soupçonne que certains autres paquets peuvent nécessiter un redémarrage si le noyau ne change pas (quand j'ai installé kexec-tools-2.0.0-258 sur centos6.0, il n'y avait pas de mémoire réservée pour le dump).

7voto

ptman Points 26336

uname -a vs. rpm -q kernel y needs-restarting de yum-utils

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X