Comment savoir pourquoi la suspension échoue parfois?

17

Quelque chose provoque parfois un blocage de la suspension. Lorsqu'il se bloque, le système se fige avec un écran noir et reste allumé, sans suspendre. Cela m'oblige à maintenir le bouton d'alimentation jusqu'à l'arrêt du système.

Une différence de réglage que j'ai de la plupart des gens est que je n'utilise pas l'option qui vous permet de suspendre lorsque le couvercle de l'ordinateur portable est fermé. L'ouverture et la fermeture du couvercle de l'ordinateur portable n'ont donc aucune action. J'aime appuyer sur suspendre manuellement. Ce changement de préférence pourrait-il être la cause?

Comment puis-je commencer à rechercher la cause du crash, car le crash n'affiche pas d'erreurs?

Isaac
la source

Réponses:

17

Je ne pense pas que le paramètre que vous mentionnez ait quelque chose à voir avec cela.

Vérifiez /var/log/pm-suspend.loget voyez si cela donne un indice.

Ces problèmes sont généralement dus à certains processus empêchant la suspension du système.

Faire

dmesg -T|grep Freez -A4

et recherchez ces entrées:

--
[sun mar  3 15:19:48 2013] Freezing user space processes ... 
[sun mar  3 15:20:08 2013] Freezing of tasks failed after 20.01 seconds (3 tasks refusing to freeze, wq_busy=0):
[sun mar  3 15:20:08 2013] mount.nfs       D e8631aa0     0  5518   5517 0x00800004
[sun mar  3 15:20:08 2013]  e8631b10 00000086 f7bc0e00 e8631aa0 c1053cb4 c1809020 c192ee00 c192ee00
--

Vérifiez les horodatages pour voir lequel des problèmes signalés se rapporte à votre tentative de suspension. Dans ce cas, c'est ce mount.nfsqui cause les problèmes.

Maintenant, mettez un script /etc/pm/sleep.d/dedans, les scripts seront exécutés lors de la suspension et de la reprise. Le nom du fichier doit commencer par un numéro de commande, 00-49 pour les scripts utilisateur (pour plus de détails, voir man pm-suspend).

Le script pourrait ressembler à ceci

#!/bin/sh
(killall -9 mount.nfs; exit 0)

avec des entrées correspondantes pour d'autres processus qui ont causé des problèmes, le cas échéant.

Entre parenthèses et exit 0est une astuce: si le processus n'est pas trouvé, killallsortira avec le code de sortie 1, ce qui annulera la suspension entière. Ce qui précède s'exécutera killalldans un sous-shell qui se terminera par 0.

Si vous rencontrez des problèmes, vérifiez /var/log/pm-suspend.logque cela enregistrera la tentative de suspension et d'exécuter votre script.

Carl
la source
J'avais également besoin d'une autre ligne: (killall -9 mount.nfs; exit 0) car parfois cela ne fonctionne pas uniquement avec SIGUP.
Juanin
@Juanin: -9c'est mieux, je ne sais pas pourquoi je n'avais qu'en -1premier lieu, est édité maintenant.
Carl
Je me demande quel pourcentage du temps le problème est un montage réseau en direct (comme indiqué ici). C'était aussi mon problème - mais c'était sshfsau lieu de nfs.
nobar
S'il y a plus d'une tâche refusant de geler, cela pourrait être lié à ce bogue: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1676912
mhellmeier
Cette méthode fonctionne-t-elle également dans Ubuntu 18.04 .. ??
Ramesh-X