Ubuntu系统中如何设置屏幕常亮,避开休眠导致的工作中断。比如实际应用中,医疗影像或者是编程马拉松连续开发、实验室设备监控或金融交易终端等都有屏幕常亮需求。下面总结了7种屏幕常亮方案,包括桌面环境到服务器无GUI场景。
图形界面全局设置
GNOME桌面(Ubuntu 22.04+默认)
1. 打开系统设置 > 电源
2. 关闭"自动挂起"和"屏幕自动关闭"开关
3. 调整"空白屏幕"选项为"从不"
```gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0```
此命令直接关闭AC电源下的休眠计时器
KDE Plasma桌面
1. 进入系统设置 > 电源管理
2. 选择"能源节省"标签页
3. 取消勾选"启用屏幕节能"
4. 拖动"屏幕关闭时间"至最大值(6小时)
```kwriteconfig5 --file powermanagementprofilesrc --group AC --key DPMSControl --type bool false```
禁用DPMS电源控制
终端命令底层控制中,xset工具禁用屏幕保护
# 立即生效(临时方案)
xset s off # 关闭屏幕保护
xset -dpms # 禁用DPMS节能
xset s noblank # 阻止屏幕变黑
# 永久生效方案(添加至~/.profile)
echo "xset s off -dpms s noblank" >> ~/.profile
systemd服务管理(适用于无GUI服务器)
创建服务文件防止系统休眠:
sudo tee /etc/systemd/system/disable-sleep.service <<EOF
[Unit]
Description=Disable sleep
[Service]
ExecStart=/bin/sh -c "while true; do systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target; sleep 60; done"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now disable-sleep.service
电源管理高级配置
TLP电源工具调优,安装并配置高级电源管理:
sudo apt install tlp
sudo nano /etc/tlp.conf
修改关键参数:
```ini
# 禁用USB自动挂起
USB_AUTOSUSPEND=0
# 设置屏幕空闲超时(秒)
DISK_IDLE_SECS_ON_AC=0
MAX_LOST_WORK_SECS_ON_AC=0
内核参数修改
编辑GRUB配置永久生效:
sudo nano /etc/default/grub
# 在GRUB_CMDLINE_LINUX_DEFAULT添加:
GRUB_CMDLINE_LINUX_DEFAULT="... consoleblank=0"
sudo update-grub
consoleblank=0 参数直接禁用控制台空白
多显示器专属方案
XRANDR动态控制双屏,创建显示器常亮脚本:
#!/bin/bash
# 获取所有连接显示器
displays=$(xrandr | grep ' connected' | cut -d' ' -f1)
for display in $displays; do
xrandr --output $display --preferred
xrandr --output $display --set "scaling mode" "Full"
xrandr --output $display --set "Broadcast RGB" "Full"
done
添加计划任务每10分钟激活:
(crontab -l ; echo "/10 /path/to/script.sh") | crontab -
桌面环境特殊处理
Unity桌面(旧版Ubuntu)
```dconf write /org/gnome/settings-daemon/plugins/power/sleep-display-ac 0```
XFCE环境
```xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-ac -s 0```
MATE桌面
```gsettings set org.mate.power-manager sleep-display-ac 0```
疑难场景解决方案
盒盖不休眠(笔记本专用)
sudo nano /etc/systemd/logind.conf
修改配置:
```ini
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
重启服务:
```sudo systemctl restart systemd-logind```
HDMI连接问题
当外接显示器仍休眠时,检查EDID数据:
sudo apt install read-edid
sudo get-edid | parse-edid
在xorg.conf添加缺失模式:
```Section "Monitor"
Identifier "HDMI-1"
Modeline "1920x1080_60.00" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +Hsync +Vsync
EndSection```
企业级部署方案
Ansible批量配置创建playbook:
```yaml
- name: 配置屏幕常亮
hosts: workstations
tasks:
- name: 设置GNOME参数
command: gsettings set org.gnome.desktop.session idle-delay 0
- name: 禁用systemd休眠
copy:
dest: /etc/systemd/system/disable-sleep.service
content: |
[Unit]
Description=Disable sleep
[Service]
ExecStart=/bin/systemctl mask sleep.target suspend.target
[Install]
WantedBy=multi-user.target
- name: 启用服务
systemd:
name: disable-sleep.service
enabled: yes
state: started
监控与告警
使用Prometheus检测异常休眠:
```yaml
# node_exporter自定义收集器
- name: display_state
command: xset q | grep 'Monitor is' | awk '{print $3}'
collectors:
- type: gauge
name: display_active
help: Display activity state
match:
- 'On' => 1
- 'Off' => 0
配置Grafana报警规则:当display_active==0超过5分钟触发工单
某证券交易所部署Ubuntu交易终端后,因屏幕休眠导致实时行情中断,造成单日损失超$200万。采用systemd服务+内核参数双重保障后:
1. 终端无操作72小时仍保持亮屏
2. 通过Ansible统一管理300+终端
3. Prometheus实时监控异常率降至0.001%
配置建议优先级:
1. 桌面用户:图形设置 + xset永久配置
2. 服务器:systemd服务 + GRUB参数
3. 企业环境:Ansible部署 + 监控告警
4. 特殊硬件:EDID修复 + 盒盖设置
记住关键检测命令:```systemctl status sleep.target``` 查看休眠状态,```xset q``` 验证DPMS关闭状态。当所有方案失效时,检查硬件按钮(如戴尔显示器需关闭Eco模式)。通过上述分层解决方案,无论是单台开发机还是千台终端集群,都能实现屏幕状态的精准控制。