Si vous n'utilisez pas Linux, vous pouvez vous arrêter de lire ici !
Si vous utilisez Linux uniquement en mode graphique (KDE, Gnome, ...etc), et/ou que vous redémarrez votre machine tout les jours, ce qui suit n'a pas grand intérêts pour vous
Donc, j'ai quelques machines qui sont installées avec Ubuntu LTS. Elles tournent 24h/24 et affichent des "uptime" qu'un utilisateur de Window$ ne pourrait pas croire possible
Une bonne partie du temps, je me connecte à distance dessus, en utilisant SSH, en mode terminal
Il arrive parfois que je sois obligé de faire des mises à jours à distance
Pas de soucis majeur
$> sudo apt update
$> sudo apt upgrade
et le tour est joué
A un détail près !
Contrairement à lorsque vous êtes en mode graphique, à la fin de la procédure rien ne vous indique que vous devez redémarrer la machine
Au mieux, vous verrez un message lors de votre prochaine connexion
Lors d'une mise à jour, lorsque qu'un package nécessite un redémarrage, un fichier "/var/run/reboot-required" est créé
Il suffit donc de vérifier la présence de ce fichier pour savoir s'il on doit rebooter ou pas
Un petit script bash fait le job
#!/bin/bash
if [ -f /var/run/reboot-required ]; then
echo 'redemarrage necessaire'
fi
Ou même mieux, un alias dans .bashrc
alias rr='if [ -f /var/run/reboot-required ]; then echo "reboot required"; else echo "No reboot needed"; fi'
, rechargé avec un
$> source .bashrc
et voilà
$> rr
No reboot needed
Cependant, il y a un autre cas de figure, moins connu.
Comme vous le savez, sous Linux, quand vous démarrez une application, ou un service, la majorité est chargé directement en mémoire, ce qui permet des temps d’exécution très rapide.
Imaginons que j'aille un service "nfs-common" ou "samba" qui permettent de "mounter" des partitions dans le réseau (partager avec un Windows ou un autre Linux)
Si une mise à jour de ces services est installé, celle-ci se charge de les redémarrer.
MAIS si on met à jour une librairie, dont dépendent ces services, ceux-ci ne sont pas redémarré. Ils continuent de fonctionner avec l'ancienne version de la librairie qui est chargé en mémoire
Et vous n'avez pas d'information comme quoi la machine doit être redémarrer !!
Ce qui peux être problématique si celle-ci est directement connectée à l'Internet (serveur web par exemple) et que la mise à jour était pour corriger un bug dans la dite librairie
Heureusement tout n'est pas perdu
Il existe un package "
debian-goodies" qui, entre autres, installe un petit programme bien utile : "checkrestart"
Help to find and restart processes which are using old versions of upgraded files (such as libraries)
Permet de trouver et redémarrer les process qui utilisent d'anciennes versions de fichiers mis à jour (comme des librairies) !!
Vous avez besoin d'être 'root' ou d'utiliser 'sudo' pour le lancer car il va "fouiller" dans des endroits que seul l'administrateur a (devrait avoir) accès.
$> sudo checkrestart
Found 57 processes using old versions of upgraded files
(42 distinct programs)
(36 distinct packages)
Of these, 26 seem to contain systemd service definitions or init scripts which can be used to restart them.
The following packages seem to have definitions that could be used
to restart their services:
nfs-common:
1513 /sbin/rpc.statd
...
samba:
1348 /usr/sbin/smbd
1344 /usr/sbin/smbd
1346 /usr/sbin/smbd
...
These are the systemd services:
systemctl restart nfs-idmapd.service
...
systemctl restart nfs-config.service
...
These are the initd scripts:
...
service samba-ad-dc restart
service smbd restart
service samba restart
service nmbd restart
...
These processes (10) do not seem to have an associated init script to restart them:
ibus:
1453 /usr/lib/ibus/ibus-x11
pulseaudio:
1418 /usr/bin/pulseaudio
Donc il fait l'inventaire des services qui tournent sur votre machine et qui nécessitent d'être redémarrer suite à une mise à jour
Il vous donne même les scripts à appeler pour les redémarrer et vous signale s'il n'en existe pas
Pour les services qui possèdent un script (systemd ou initd), vous pouvez simplement appeler celui-ci et vous n'aurez pas besoin de redémarrer la machine
Malheureusement, ceux qui n'ont pas de script, eux nécessiterons un redémarrage ... mais généralement ce ne sont pas des process critiques (en ce qui me concerne), donc ils peuvent attendre la prochaine mise à jour du kernel par exemple
A utiliser après chaque mise à jour, même quand faite par l'interface graphique, histoire de garder une machine propre et stable
Évidemment, si vous éteignez votre machine tout les soir avant d'aller vous coucher pour la redémarrer le lendemain, tout ceci n'a pas de sens !
ericc