¿Cómo encontrar la razón por la que un portátil se despierta?

9

Tengo un problema con la suspensión de mi computadora portátil, pero luego me despierto cuando no lo quiero (ya sea de inmediato o mucho más tarde cuando está en la bolsa; es posible que tenga dos problemas que resolver aquí). Pero por el momento esta pregunta es sobre la resolución de problemas: ¿hay algún comando que pueda ejecutar que me diga cuál fue el desencadenante de la última resumeacción? Por ejemplo, si se presionó una tecla, o el botón de encendido, si se trataba de una señal de activación, si estaba cambiando de alimentación de CA a batería, etc., etc.

Parece que en Windows puede escribir powercfg -lastwakepara averiguarlo. Entonces estoy buscando el equivalente de Linux de ese comando.

Si no existe dicho comando, ¿qué debo buscar, en qué archivo de registro?

(Mint 16, xfce, Lenova Thinkpad, kernel 3.11.0-12-generic)

Darren Cook
fuente

Respuestas:

3

Dado que tiene un ThinkPad, además de las otras sugerencias (sugerencia preliminar systemd), si está utilizando el thinkpad_acpicontrolador, es posible que desee echarle un vistazo /sys/devices/platform/thinkpad_acpi/wakeup_reason. Este archivo contiene un número que le indica si el controlador incorporado despertó su computadora portátil por razones comobatería baja (al menos pensé que sí), solicitud de eliminación de muelle, etc.

Como Documentation/laptops/thinkpad-acpi.txtestados:

wakeup_reason:
    Set to 1 if the system is waking up because the user
    requested a bay ejection.  Set to 2 if the system is
    waking up because the user requested the system to
    undock.  Set to zero for normal wake-ups or wake-ups
    due to unknown reasons.
Andreas Wiese
fuente
4

Sistemas con systemd

En los sistemas que lo utilizan systemd, puede consultar el registro de systemd con el journalctlcomando

Ejemplo

Aquí, por ejemplo, mi sistema se fue a dormir debido a que la tapa se cerró y luego, cuando lo abrí, vería eventos relacionados con esto de la siguiente manera:

$ journalctl | less
...
May 19 09:04:47 greeneggs.bubba.net kernel: PM: Syncing filesystems ... done.
May 19 09:04:47 greeneggs.bubba.net kernel: PM: Preparing system for mem sleep
May 19 09:33:42 greeneggs.bubba.net kernel: Freezing user space processes ... (elapsed 0.002 seconds) done.
May 19 09:33:42 greeneggs.bubba.net systemd[1]: Time has been changed
May 19 09:33:42 greeneggs.bubba.net systemd-logind[772]: Lid opened.
...

Sistemas sin systemd

Para los sistemas que no utilizan systemdtiene una variedad de lugares para buscar. Para empezar, podría buscar en el dmesgregistro. También puede buscar /var/log/syslogmensajes relacionados con la administración de energía o eventos relacionados con ACPI.

Comenzaría por echar un vistazo /var/log/pm_suspend.log, suponiendo que exista. Especialmente en distribuciones como Linux Mint, es probable que encuentre mensajes como este allí:

Thu Feb 21 21:21:50 GMT 2013: Running hooks for hibernate.
Running hook /usr/lib/pm-utils/sleep.d/000kernel-change hibernate hibernate:
/usr/lib/pm-utils/sleep.d/000kernel-change hibernate hibernate: success.
Running hook /usr/lib/pm-utils/sleep.d/00logging hibernate hibernate:
...

Referencias

slm
fuente
Pero systemd no es predeterminado en Mint o Debian. Actualmente solo se incluye como vista previa en Debian-stable.
Thomas Hughes
@GuyHughes: sí, lo sé, estoy buscando la forma de hacerlo en versiones anteriores.
slm
0

Puede comenzar con dmesg, verificar, man dmesgpero es posible que desee probar dmesg -k.

Thomas Hughes
fuente
dmesg -k | wc -lda 3298 :-) Por cierto, ¿esto me dice algo diferente de mirar /var/log/kern.log?
Darren Cook,
@DarrenCook solo identifica cuándo ocurrió la suspensión / reanudación y analiza esa sección, lo que hará wc -lmucho menos.
Thomas Hughes