笔记本电脑安装headless linux系统(不带桌面gui)作为服务器使用时,有两个问题需要解决:

  1. 合盖以后系统自动休眠
  2. 屏幕常亮

要解决也很简单

  1. 取消合盖休眠

只需要修改/etc/systemd/logind.conf配置文件即可

找到HandleLidSwitch开头的三个设置项

HandleLidSwitch=suspend        # 合上盖子时休眠
HandleLidSwitchExternalPower=suspend  # 接通电源时合上盖子仍休眠
HandleLidSwitchDocked=ignore   # 当连接外接显示器时忽略盖子动作

参数释义:

  • suspend:休眠(默认行为)。
  • hibernate:进入深度休眠(需要确保系统支持)。
  • poweroff:关机。
  • ignore:忽略盖子关闭动作(不会休眠)。

根据自己的需求,将suspend修改为ignore即可,然后用一下命令重启服务后生效

sudo systemctl restart systemd-logind.service
  1. 关闭屏幕背光

对于关闭屏幕,网上有很多方法都说通过电源控制来管理,但我实测以后发现不仅需要额外安装一堆包而且还不管用,所以最后用的方法是:直接将屏幕亮度设置为0

可以先用以下命令查看当前屏幕的亮度

# 不同硬件可能路径不同,请自行调整
cat /sys/class/backlight/intel_backlight/brightness

用以下命令将屏幕亮度设置为0

echo 0 | sudo tee /sys/class/backlight/intel_backlight/brightness

有些奇怪的硬件可能会自动重置屏幕亮度,也就是明明关闭了背光,但过段时间以后屏幕又会变亮,这种情况可以用crontab配合bash脚本时间自动检测屏幕亮度

bash脚本如下(需要root权限)

#!/bin/bash

# 通常亮度控制文件位于这个路径
brightness_file="/sys/class/backlight/intel_backlight/brightness"
# 不同系统可能需要调整路径,例如:
# /sys/class/backlight/amdgpu_bl0/brightness
# /sys/class/backlight/acpi_video0/brightness

# 检查文件是否存在
if [ ! -f "$brightness_file" ]; then
    echo "无法找到亮度控制文件"
    exit 1
fi

# 获取当前亮度
current_brightness=$(cat "$brightness_file")

# 检查亮度是否为0
if [ "$current_brightness" -ne 0 ]; then
    # 需要root权限来修改亮度
    echo 0 |  tee "$brightness_file" > /dev/null
    echo "亮度已设置为0"
else
    echo "亮度已经是0"
fi

喝杯奶茶