¿Cómo puedo averiguar por qué a veces falla la suspensión?

17

Algo está causando el bloqueo de suspensión ocasionalmente. Cuando se bloquea, el sistema se congela con una pantalla negra y permanece encendido, sin suspenderlo. Esto me obliga a mantener presionado el botón de encendido hasta que el sistema se apaga.

Una diferencia de configuración que tengo de la mayoría de las personas es que no uso la opción que te permite suspender cuando la tapa del portátil está cerrada. Entonces, abrir y cerrar la tapa del portátil no tiene acciones. Me gusta presionar suspender manualmente. ¿Podría esta preferencia cambiar ser la causa?

¿Cómo puedo comenzar a buscar qué está causando el bloqueo, ya que el bloqueo no muestra errores?

Isaac
fuente

Respuestas:

17

No creo que la configuración que mencionas tenga algo que ver con eso.

Compruebe /var/log/pm-suspend.logy vea si da alguna pista.

Estos problemas generalmente se deben a que algunos procesos impiden la suspensión del sistema.

Hacer

dmesg -T|grep Freez -A4

y busque estas entradas:

--
[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
--

Verifique las marcas de tiempo para ver cuáles de los problemas informados se relacionan con su intento de suspender. En este caso, es mount.nfsque está causando los problemas.

Ahora, coloque un script /etc/pm/sleep.d/, los scripts se ejecutarán en suspender y reanudar. El nombre del archivo debe comenzar con un número de pedido, 00-49 para los scripts de usuario (para más detalles, consulte man pm-suspend).

El guión podría verse así

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

con entradas correpsons para otros procesos que causaron problemas, si los hay.

Paréntesis y exit 0es un truco: si no se encuentra el proceso, killallsaldrá con el código de salida 1, que cancelará la suspensión completa. Lo anterior se ejecutará killallen un sub-shell que saldrá con 0.

Si tiene problemas, compruebe /var/log/pm-suspend.logque registrará el intento de suspender y ejecutar su secuencia de comandos.

Carl
fuente
También necesitaba otra línea: (killall -9 mount.nfs; salida 0) porque a veces no funciona solo con SIGUP.
Juanin
@Juanin: -9es mejor, no sé por qué solo tenía -1en primer lugar, está editado ahora.
Carl
Me pregunto qué porcentaje del tiempo el problema es un montaje de red en vivo (como se muestra aquí). Ese fue mi problema también, pero lo fue en sshfslugar de nfs.
nobar
Si hay más de una tarea que se niega a congelarse, podría estar relacionado con este error: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1676912
mhellmeier
¿Este método también funciona en Ubuntu 18.04?
Ramesh-X