Forums

ericc is dreaming :: Forums :: Support :: Linux
 
<< Sujet précédent | Sujet suivant >>
rebooter un Debian/Ubuntu
Modérateurs:ericc, toxxic, mich_belge
Auteur Message
ericc
mar. févr. 20 2018, 11:40
ericc

Membre enregistré #1
Inscrit(e) le: ven. avril 06 2007, 20:31
Messages: 2255
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
  1. $> sudo apt update
  2. $> 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
  1. #!/bin/bash
  2. if [ -f /var/run/reboot-required ]; then
  3.   echo 'redemarrage necessaire'
  4. fi

Ou même mieux, un alias dans .bashrc
  1. alias rr='if [ -f /var/run/reboot-required ]; then echo "reboot required"; else echo "No reboot needed"; fi'
, rechargé avec un
  1. $> 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
Retour en haut
Site Internet
toxxic
mar. févr. 20 2018, 18:26
toxxic

Membre enregistré #3
Inscrit(e) le: dim. oct. 01 2006, 08:54
Messages: 1416
Effectivement moi par exemple cela ne me concerne pas.

Bien que je n'éteigne pas tous les soirs mes PC ils n'ont pas vocation à rester allumer tout le temps , surtout mon système principale est en roulement continu et je l'utilise presque exclusivement en graphique.

Merci pour L'astuce
Retour en haut
 

Allez à:     Retour en haut

Fil d’informations pour ce sujet: RSS 0.92 Fil d’informations pour ce sujet: RSS 2.0 Fil d’informations pour ce sujet: RDF
Powered by e107 Forum System
Temps d'exécution:0.0649s, dont0.0135de celui des requêtes.Requêtes BdD:28. Utilisation mémoire:1,422ko