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
即可,这下休眠就正常了!