当系统空闲或笔记本电脑盖关闭时,Linux 可以自动进入睡眠状态,但用户可以通过系统设置或 logind.conf 配置文件配置禁用该行为。

但是,如果您不想让计算机进入睡眠状态,例如用于服务器,那么您可以完全禁用此功能。因此,即使关机菜单中的挂起选项或相应的 Linux 命令也不起作用!
Ubuntu-20th
配置 Systemd 以完全禁用系统睡眠

对于现代 Linux 发行版(包括Ubuntu、Debian、Fedora、Arch 和 openSUSE),挂起、休眠和其他睡眠功能由 systemd 管理。

Systemd 包括以下 4 个服务,它们在用户或系统尝试进入睡眠状态时执行操作:

systemd-suspend.service
systemd-suspend-then-hibernate.service
systemd-hibernate.service
systemd-hybrid-sleep.service

禁用(屏蔽)上述服务不会停止操作,而是会中断睡眠过程。在 Ubuntu 中屏蔽挂起服务后,它仍然可以挂起我的笔记本电脑,尽管它会在几秒钟后自动唤醒。

正确的方法是配置 systemd-sleep.conf 并编写规则以告诉 systemd 禁用该功能。

  1. 首先,打开终端(Ctrl+Alt+T)或连接到您的 Linux 服务器,然后运行命令来编辑 systemd 睡眠配置文件:

    sudo nano /etc/systemd/sleep.conf

在这里我使用 nano 命令行文本编辑器,它既可以在桌面上运行,也可以在服务器上运行。您可以将其替换为 Ubuntu 22.04 及更早版本的 gedit、24.04 和其他具有最新 GNOME 的 Linux 的 gnome-text-editor、XFCE 的鼠标垫或其他文本编辑器,具体取决于您的桌面。

  1. 文件打开后,向下滚动并在 [Sleep] 部分下设置以下规则:

    AllowSuspend=no
    AllowHibernation=no
    AllowSuspendThenHibernate=no
    AllowHybridSleep=no

如果存在,请删除上面行开头的“#”,并将值设置为 no,或者手动添加。完成后,按 Ctrl+S 保存更改,按 Ctrl+X 退出。

  1. 保存文件后,我的 Ubuntu 24.04 右上角的关机菜单中的“Suspend”选项立即消失。

并且,systemctl suspend 命令拒绝运行并显示“调用 Suspend 失败:配置禁用了 Sleep 动词‘suspend’”。

注意:Systemd 还从 /etc/systemd/sleep.conf.d 目录下的 .conf 文件中读取配置。意思是,您可以运行以下命令来创建自定义 conf 文件:

sudo nano /etc/systemd/sleep.conf.d/disable-sleep.conf

然后,将以下几行添加到文件中,以执行相同的工作,甚至覆盖步骤 2 中的先前规则。

[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowHybridSleep=no
AllowSuspendThenHibernate=no

重新启用 Suspend/Hibernate

要重新启用这些功能,请重新配置 /etc/systemd/sleep.conf 文件并注释掉(在开头添加 #)这 4 行。

或者,只需删除您添加的文件,例如 /etc/systemd/sleep.conf.d 目录下的“disable-sleep.conf”。

最后修改:2024 年 10 月 10 日
如果觉得我的文章对你有用,请随意赞赏