繁华依在的小站

Ubuntu 设置电源键黑屏但不休眠

技术 作者:繁华依在 | 发布时间:2026-01-21 00:13 | 更新时间:2026-04-09 01:45 | 阅读:26 |
标签: Ubuntu Linux 系统配置 电源管理

Ubuntu 设置电源键黑屏但不休眠

前言

在日常使用电脑时,有时候我们希望按下电源键时只关闭屏幕,而不是让系统休眠或关机。这样做的好处是: - 保护屏幕,延长显示器寿命 - 节省电力 - 系统保持运行,后台任务继续执行 - 需要使用时可以快速恢复(移动鼠标或按键)

本文将介绍如何在 Ubuntu 系统中实现"按下电源键时黑屏但不休眠"的功能。

适用场景

  • 下载大文件时不想让屏幕一直亮着
  • 运行长时间计算任务需要保持系统运行
  • 听音乐时不需要屏幕显示
  • 离开工位但希望快速恢复工作

实现原理

在 Linux 系统中,电源按钮事件由以下组件处理:

  1. systemd-logind:系统级别的电源管理服务
  2. acpid(ACPI daemon):监听 ACPI 事件,包括电源键按下
  3. 桌面环境(如 GNOME):处理用户级别的电源设置

我们的实现方案是: - 让 systemd 忽略电源键事件 - 使用 acpid 监听电源键事件 - 触发自定义脚本关闭屏幕 - 使用 xset 命令控制显示器电源

实施步骤

1. 创建屏幕关闭脚本

首先创建一个脚本来实现关闭屏幕的功能:

```bash

!/bin/bash

按下电源键时关闭屏幕但不休眠

if [ -x /usr/bin/xset ]; then # 使用 xset 关闭屏幕(适用于 X11) export DISPLAY=:0 export XAUTHORITY=/home/lwl/.Xauthority /usr/bin/xset dpms force off fi

exit 0 ```

将这个脚本保存到 /etc/acpi/power-button.sh 并添加执行权限。

2. 创建 ACPI 事件配置

创建 ACPI 事件处理器配置文件 /etc/acpi/events/power-button

event=button/power PWR[BF] 00000080 00000000 action=/etc/acpi/power-button.sh %e

这个配置告诉 acpid 监听电源键按下事件,并执行我们的脚本。

3. 配置 systemd 忽略电源键

编辑 /etc/systemd/logind.conf 文件,修改电源键处理策略:

```bash

找到这一行:

HandlePowerKey=poweroff

改为:

HandlePowerKey=ignore ```

这样 systemd 就不会处理电源键事件,避免与 acpid 冲突。

4. 重启相关服务

配置完成后,重启相关服务使设置生效:

```bash

重启 acpid 服务

sudo systemctl restart acpid

启用 acpid 开机自启

sudo systemctl enable acpid

重启 systemd-logind 服务

sudo systemctl restart systemd-logind ```

完整配置命令

为了方便,这里提供完整的配置命令:

```bash

1. 创建事件处理器配置

echo 'qwer' | sudo -S sh -c 'cat > /etc/acpi/events/power-button << "EOF" event=button/power PWR[BF] 00000080 00000000 action=/etc/acpi/power-button.sh %e EOF'

2. 创建动作脚本

echo 'qwer' | sudo -S sh -c 'cat > /etc/acpi/power-button.sh << "EOF"

!/bin/bash

按下电源键时关闭屏幕但不休眠

if [ -x /usr/bin/xset ]; then export DISPLAY=:0 export XAUTHORITY=/home/lwl/.Xauthority /usr/bin/xset dpms force off fi

exit 0 EOF'

3. 添加执行权限

echo 'qwer' | sudo -S chmod +x /etc/acpi/power-button.sh

4. 修改 systemd 配置

echo 'qwer' | sudo -S sed -i 's/#HandlePowerKey=poweroff/HandlePowerKey=ignore/' /etc/systemd/logind.conf

5. 重启服务

echo 'qwer' | sudo -S systemctl restart acpid echo 'qwer' | sudo -S systemctl enable acpid echo 'qwer' | sudo -S systemctl restart systemd-logind ```

注意:将命令中的 qwer 替换为你自己的 sudo 密码。

测试方法

配置完成后,按照以下步骤测试:

  1. 按一下电源键(轻按,不要长按)
  2. 屏幕应该会立即黑屏
  3. 移动鼠标或按键盘任意键
  4. 屏幕应该会恢复正常显示

如果成功,说明配置已生效!

验证配置

可以通过以下命令验证配置是否正确:

```bash

查看 acpid 服务状态

sudo systemctl status acpid

查看事件配置

cat /etc/acpi/events/power-button

查看动作脚本

cat /etc/acpi/power-button.sh

查看 systemd logind 配置

grep HandlePowerKey /etc/systemd/logind.conf ```

注意事项

  1. 电源键操作方式

    • 轻按一次:关闭屏幕(我们配置的功能)
    • 长按 4 秒以上:强制关机(系统保留的安全机制)
    • 短按两次:关闭屏幕两次
  2. 系统兼容性

    • 适用于 Ubuntu 及其他使用 systemd 的 Linux 发行版
    • 需要安装 acpid 服务(通常已预装)
    • X11 和 Wayland 环境均可使用
  3. 唤醒方式

    • 移动鼠标
    • 按键盘任意键
    • 触摸板操作(如果是笔记本)
  4. 安全提示

    • 配置前建议先备份系统
    • 长按电源键仍然会强制关机
    • 如需恢复默认行为,删除配置文件并重启服务即可

故障排除

问题1:按电源键没反应

可能原因: - acpid 服务未运行 - 配置文件格式错误

解决方法: ```bash

检查 acpid 服务状态

sudo systemctl status acpid

如果未运行,启动服务

sudo systemctl start acpid

查看日志

sudo journalctl -u acpid -f ```

问题2:按电源键直接关机

可能原因: - systemd logind 配置未生效 - acpid 配置未生效

解决方法: ```bash

检查 systemd 配置

grep HandlePowerKey /etc/systemd/logind.conf

应该显示:HandlePowerKey=ignore

重启 systemd-logind

sudo systemctl restart systemd-logind ```

问题3:屏幕关闭后无法唤醒

可能原因: - 系统进入休眠状态而非只是关闭屏幕 - 显示器电源管理问题

解决方法: ```bash

禁用系统自动休眠

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing' gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0 ```

恢复默认设置

如果需要恢复电源键的默认行为,执行以下操作:

```bash

1. 删除 acpid 配置

sudo rm /etc/acpi/events/power-button sudo rm /etc/acpi/power-button.sh

2. 恢复 systemd 配置

sudo sed -i 's/HandlePowerKey=ignore/#HandlePowerKey=poweroff/' /etc/systemd/logind.conf

3. 重启服务

sudo systemctl restart acpid sudo systemctl restart systemd-logind ```

进阶配置

1. 添加延迟关闭

如果希望电源键按下后延迟几秒再关闭屏幕:

```bash

!/bin/bash

sleep 3 # 延迟 3 秒 /usr/bin/xset dpms force off ```

2. 添加通知提醒

在关闭屏幕前显示桌面通知:

```bash

!/bin/bash

发送桌面通知

notify-send "电源管理" "屏幕即将关闭..."

延迟 2 秒后关闭屏幕

sleep 2 /usr/bin/xset dpms force off ```

3. 关闭屏幕并锁定

结合屏幕锁定功能:

```bash

!/bin/bash

锁定屏幕

xdg-screensaver lock

关闭屏幕

/usr/bin/xset dpms force off ```

总结

通过配置 acpid 和修改 systemd 设置,我们成功实现了"按下电源键时黑屏但不休眠"的功能。这个配置:

优点: - 操作简单,一键实现 - 系统保持运行,不影响后台任务 - 快速恢复,无需等待系统唤醒 - 保护屏幕,节省电力

⚠️ 注意事项: - 长按电源键仍会强制关机 - 需要注意区分短按和长按 - 建议配合屏幕锁定功能使用

这个功能特别适合需要让电脑长时间运行但又不想屏幕一直亮着的场景,比如下载文件、编译代码、运行计算任务等。

参考资料


发布时间:2026-01-21

标签:#Ubuntu #Linux #系统配置 #电源管理

分类:技术

评论 (0)

暂无评论,快来抢沙发吧~

发表评论