Linux休眠后立即被唤醒的解决方案

2023 年 11 月 20 日 星期一
37

Linux休眠后立即被唤醒的解决方案

参考了这个帖子的解决方法。

我的笔记本症状和其中一样,在休眠过后立即被唤醒,导致休眠无法使用。

能够将笔记本从休眠状唤醒的事件定义在/proc/acpi/wakeup 这个文件里,只要将无关的事件禁用,就可以查出是哪个事件唤醒系统了。 禁用或启用某个事件可以用开关控制:

echo IGBE | sudo tee /proc/acpi/wakeup

所以可以撰写一个脚本suspend_event.sh(脚本来自原作者):

#!/bin/sh
# @Author: lance
# @Date:   2015-10-07 22:38:51
# @Last Modified by:   lance
# @Last Modified time: 2015-10-07 22:42:21
#
# Some events will wakeup right after suspend, disable them
stat=$(cat /proc/acpi/wakeup)
wakers=(IGBE EXP2 XHCI EHC1)
for waker in ${wakers[@]}; do
    is_en=$(echo "${stat}" | grep $waker | grep disabled);
    if  [ -z "$is_en" ]; then
        echo disable wakeup of $waker...
        echo $waker | tee /proc/acpi/wakeup;
    fi
done

保存在一个地方,比如我放在了家目录下,给予执行权限,这里我直接chmod 777 ./suspend_event.sh了。

再编写一个 systemd 项目,让其开机启动, sudo vim /etc/systemd/system/suspend_event.service

[Unit]
Description=disable some events to wake up device
After=systemd-udev-settle.service

[Service]
Type=idle
ExecStart=/home/yuzi/suspend_event.sh
RemainAfterExit=no

[Install]
WantedBy=multi-user.target

最后执行sudo systemctl enable --now suspend_event.service即可,这下休眠就正常了!

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...