Ubuntu 18.04.2 立即从挂起状态唤醒

Ubuntu 18.04.2 立即从挂起状态唤醒

如果我尝试暂停系统,它会立即或几分钟后唤醒。我有一段系统日志摘录,显示了系统何时进入暂停状态和退出,但我不知道如何以易于阅读的格式将其上传到这里。

答案1

从 ubuntu 16.04 升级到 ubuntu 18.04 后我遇到了同样的问题。

我通过禁用我的情况下已启用的设备的唤醒选项解决了这个问题。

$ cat /sys/bus/usb/devices/*/power/wakeup
disabled
enabled
disabled
disabled

$ ll /sys/bus/usb/devices/*/power/wakeup
-rw-r--r-- 1 root root 4,0K mag 19 11:04 /sys/bus/usb/devices/1-7/power/wakeup
-rw-r--r-- 1 root root 4,0K mag 19 11:02 /sys/bus/usb/devices/1-9/power/wakeup <-- the bad guy
-rw-r--r-- 1 root root 4,0K mag 19 10:46 /sys/bus/usb/devices/usb1/power/wakeup
-rw-r--r-- 1 root root 4,0K mag 19 10:46 /sys/bus/usb/devices/usb2/power/wakeup

但真正帮助我识别设备的是它的 ID。

cat /sys/bus/usb/devices/1-9/idVendor
8087
cat /sys/bus/usb/devices/1-9/idProduct
0a2b

经过一番谷歌搜索后,发现它是蓝牙控制器。 https://usb-ids.gowdy.us/read/UD/8087/0a2b

最后禁用它

echo "disabled" >  /sys/bus/usb/devices/1-9/power/wakeup

现在我的笔记本电脑真的挂起了。希望这也能帮到你。

使其在重启后持久化:
根据这个帖子

将此命令添加到 /etc/rc.local

如果该文件不存在,则运行:

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

该文件看起来应该类似于:

#!/bin/bash
echo "disabled" >  /sys/bus/usb/devices/1-9/power/wakeup
exit 0

测试启动 rc.local 服务

sudo /etc/rc.local start

并测试一下

sudo systemctl status rc-local

重新启动才能查看更改。

答案2

我在更新 Ubuntu 21.04 Hirsute Hippo 后遇到了这种情况。问题出在 nvidia 显卡和安装的 CUDA 上。

要解决此问题,请在软件更新程序中禁用 CUDA 存储库。 软件更新程序图片

更新 nvidia 驱动程序。

sudo apt install nvidia-driver-[your drive number]

如果您不知道您的驱动程序编号,请检查您安装的驱动程序。

apt list -i | grep nvidia

在 systemd 中启用这些服务。

sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-hibernate.service
sudo systemctl enable nvidia-resume.service

答案3

对我来说,使用电源按钮是可行的。
我们可以在设置中将其配置为暂停(而不是关机)。
(但您始终可以长按以强制硬关机)。

看来如果我使用菜单中的挂起应用程序/命令,笔记本电脑将不会保持挂起状态。
我也尝试将所有 USB 的唤醒功能更改为禁用,但在这里不起作用。

我猜想电源按钮是起作用的,因为我避免触摸键盘。即使禁用,我仍然可以使用键盘唤醒。

答案4

我建议关注 方法已rc.local被弃用,主要用于特定用例和向后兼容性。

就我而言,下面的服务/etc/systemd/system如下所示:

[Unit]
Description=Disables wake-up from keyboard and mouse
# the service runs before the computer goes to sleep
Before=sleep.target

[Service]
Type=simple
ExecStart=/usr/bin/bash -c "sudo echo disabled > /sys/bus/usb/devices/1-10/power/wakeup & sudo echo disabled > /sys/bus/usb/devices/1-9/power/wakeup"

[Install]
# this does the hook to sleep.target
WantedBy=sleep.target

现在已经测试了几次,它似乎按预期工作。

相关内容