Comment trouver la raison pour laquelle un carnet se réveille?

9

J'ai un problème avec la suspension de mon ordinateur portable, mais je me réveille quand je ne le veux pas (soit immédiatement, soit beaucoup plus tard dans le sac - j'ai peut-être deux problèmes à résoudre ici). Mais pour le moment, cette question concerne le dépannage: existe-t-il une commande que je peux exécuter qui me dira quel était le déclencheur de la dernière resumeaction? Par exemple, si une touche a été enfoncée ou le bouton d'alimentation, s'il s'agissait d'un signal de réveil sur réseau local, s'il passait de l'alimentation secteur à la batterie, etc., etc.

Il semble que sous Windows, vous pouvez taper powercfg -lastwakepour le savoir. Je cherche donc l'équivalent Linux de cette commande.

S'il n'y a pas une telle commande, que dois-je rechercher, dans quel fichier journal?

(Mint 16, xfce, Lenova Thinkpad, noyau 3.11.0-12-générique)

Darren Cook
la source

Réponses:

3

Puisque vous avez un ThinkPad, en plus des autres suggestions ( systemdindice préliminaire ), si vous utilisez le thinkpad_acpipilote, vous voudrez peut-être y jeter un œil /sys/devices/platform/thinkpad_acpi/wakeup_reason. Ce fichier contient un nombre vous indiquant si le contrôleur intégré a réveillé votre ordinateur portable pour des raisons telles quebatterie faible (au moins, je le pensais), demande de retrait de quai, etc.

Comme le Documentation/laptops/thinkpad-acpi.txtdéclare:

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
la source
4

Systèmes avec systemd

Sur les systèmes qui utilisent, systemdvous pouvez consulter le journal de systemd à l'aide de la journalctlcommande.

Exemple

Ici, par exemple, mon système s'est endormi après avoir fermé le couvercle, puis quand je l'ai ouvert, vous voyez des événements liés à ceci, alors:

$ 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.
...

Systèmes sans systemd

Pour les systèmes qui n'utilisent pas, systemdvous avez une variété d'endroits à regarder. Vous pourriez pour commencer regarder dans le dmesgjournal. Vous pouvez également rechercher /var/log/syslogdes messages liés à la gestion de l'alimentation ou aux événements liés à l'ACPI.

Je commencerais par jeter un coup d'œil /var/log/pm_suspend.log, en supposant qu'il existe. Surtout sur les distributions telles que Linux Mint, vous y trouverez probablement des messages comme celui-ci:

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:
...

Références

slm
la source
Mais, systemd n'est pas par défaut dans Mint ou Debian. Il n'est actuellement inclus qu'en tant qu'aperçu dans Debian-stable.
Thomas Hughes
@GuyHughes - oui je sais, je cherche le moyen de le faire dans les versions précédentes.
slm
0

Vous pouvez commencer dmesg, vérifiez, man dmesgmais vous voudrez peut-être essayer dmesg -k.

Thomas Hughes
la source
dmesg -k | wc -ldonne 3298 :-) BTW, est-ce que cela me dit quelque chose de différent à regarder /var/log/kern.log?
Darren Cook
@DarrenCook identifie simplement quand la suspension / reprise s'est produite et analyse cette section qui le sera wc -lbeaucoup moins.
Thomas Hughes