dimanche 5 juin 2016

MATE 16.04: Ubuntu Mate 16.04 lent à s'arrêter

ATTENTION! CE SCRIPT PEUT PRODUIRE DES ERREURS NOTAMMENT LORS D'UN "SUDO APT UPDATE"


C'est un autre bug récurrent du nouvel Ubuntu...

Mate et d'autres distros utilisant systemd peuvent être anormalement lentes à s'arrêter. Si on a désactivé "Plymouth", au shutdown, on peut voir des messages du genre:

A stop job is running for... 

Note: en appuyant sur la touche Esc de votre clavier vous pourrez désactiver Plymouth temporairement et voir ainsi d'éventuelles erreurs.

Généralement, ça concerne une session (ça peut durer 90 secondes) ou Network Manager (une dizaine de secondes), mais ça peut être en rapport avec d'autres choses. Pour la session, j'ai fini par savoir que ce sont les disques externes (y compris clés USB) qui tardent à se démonter. Il se pourrait -qu'une fois de plus- systemd soit le coupable. 

À force de chercher et d'en discuter sur les forums comme ici 
https://forum.ubuntu-fr.org/viewtopic.php?id=1989436

j'ai fini pas me faire un script qui arrête Network Manager au shutdown et qui démonte préalablement les disques externes.

Voici mon script perso. Il est simpliste mais l'avantage c'est qu'on comprend bien ce qu'il fait:
#!/bin/bash -e
# démonter disques externes
umount /dev/sdc5
umount /dev/sdc6
umount /dev/sdb1
# stop network manager
service network-manager stop
exit 0;


Mais celui-ci -suggéré par un habitué du forum Ubuntu (Lynn)- est bien plus efficace et universel même s'il peut paraître un peu obscur aux newbies (y compris moi!). Voir aussi en bas d'article, une version épurée de ce script.
#!/bin/bash -e
# démonter disques externes
mount
mount|grep "/dev/sd[b-z][1-9]"
mount|grep -o "/dev/sd[b-z][1-9]"
DEVICES=$(mount|grep -o "/dev/sd[b-z][1-9]")
echo $DEVICES

for i in $DEVICES; do
 umount "${i}"
done
# stop network manager
service network-manager stop
exit 0;

  • Copiez le deuxième script (de préférence) dans un fichier texte dans Pluma, par exemple.
  • Si vous avez choisi le code de Lynn, il n'y a rien à modifier sauf si vous voulez que les partitions sda soit traitées aussi (mettre alors [a-z] au lieu de [b-z]) 
  • Enregistrez-le provisoirement dans votre /home sous le nom de K01shutdown
  • Ouvrez maintenant votre gestionnaire de fichiers en root:
gksudo caja

  • Copiez votre fichier K01shutdown
  • Collez-le dans /etc/rc0.d
  • Faites un clic droit sur le K01shutdown > propriétés > permissions et  cochez "autoriser l'exécution du fichier comme un programme"
  • Fermez et...
  • Redémarrez votre PC
Il est possible qu'il y ait encore des problèmes de "stop job..." mais après un premier redémarrage, ça devrait le faire...
Bien-sûr, si vos "stop job..." sont différents des miens, vous devrez chercher un peu par vous même comment stopper ces services ou un programme ("service machin stop" ou "killall machin").

Voir aussi: Désactiver plymouth pour voir les messages d'erreur (désolé, c'est en Anglais)



[AJOUTÉ] Suite au commentaire de Bazil, voici une autre version simplifiée du script. Il fonctionne aussi.


#!/bin/bash -e

# démonter disques externes
DEVICES=$(mount|grep -o "/dev/sd[a-z][1-9]")

for i in $DEVICES; do
 umount "${i}"
done

# stop network manager
service network-manager stop
exit 0;


5 commentaires:

  1. Bonjour,

    Il y'a un petit problème dans l'énoncé du script... Les trois lignes après "# démonter disques externes" sont en trop ( enfin inutiles...) ainsi que la ligne "echo $DEVICES".

    Pour la ligne "DEVICES=$(mount|grep -o "/dev/sd[b-z][1-9]")", il faut que la partie "/sd[a-z]" commence à la lettre "a" et non pas à "b". sda n'est pas forcement le disque où est installé le système d'exploitation.

    RépondreSupprimer
  2. Merci du commentaire. Pourriez-vous m'envoyer le script exactement comme vous le voyez? Car du coup, je ne comprends pas bien ce qu'il faut supprimer (j'ose pas!).

    Pour [b-z], j'ai bien précisé qu'on pouvait mettre [a-z] mais perso, je ne voulais pas que sda soit traité puisque tout se passe bien de ce côté. Je craignais un conflit. C'est tout de même assez rare -il me semble- que le système soit sur sdb ou autre. Par contre, ça peut effectivement être le cas pour le /home séparé.
    Il est vrai que sur mon vieil Eeepc 700 (que je n'utilise plus actuellement) mon système est installé sur une carte sdhc.

    RépondreSupprimer
    Réponses
    1. Bon, j'ai supprimé les 3 lignes en question et echo $DEVICES
      Je vais tester (plusieurs fois)

      Supprimer
  3. Le script tel qu'il est actuellement est correct. Pour le système d'exploitation, moi j'ai 6 disques durs dont trois qui sont bootable; Alors sda... tu comprendras que ça veux pas dire grand chose.

    A mon avis, ton problème est plus lié à network-manager qui ne fait son boulot correctement lors de l'extinction du pc. La ligne "service network-manager stop" peut aider dans le sens ou elle est lancée de façon inconditionnelle.
    Ça va terminer le process plus rapidement et l'extinction de la machine suivra.

    RépondreSupprimer
    Réponses
    1. Je résume: les disques externes... c'est eux qui bloquaient et produisaient le "stop job..." concernant l'arrêt de session (le plus long). Je ne sais plus comment nous nous en sommes rendu-compte. Le topic (2 pages) est ici: https://forum.ubuntu-fr.org/viewtopic.php?pid=21533420
      Le "stop job..." mettait 90 secondes à s'accomplir. Un peu long! Par contre le "stop job..." pour NetworkManager durait 10-12 sec, ce qui n'est pas bien long.
      La grande majorité avait ces 2 problèmes. Mais 1 autre gars avait autre chose... Moi, mon Plymouth est désactivé (donc je vois ce qui se passe et pourquoi ça traîne) mais pour ceux qui n'ont que le logo de Mate à contempler, le temps peut paraître long...

      Supprimer

Ajoutez un commentaire mais en bon Français ou éventuellement en bon Anglais. Les commentaires en langage SMS seront supprimés.