MacBookPro运行飞牛Nas,解决合盖亮屏

步骤一:安全编辑sudo免密规则,无权限漏洞

bash 复制代码
sudo visudo -f /etc/sudoers.d/mbp-lid-acpi

写入以下内容
# 授权root无密码执行屏幕亮度控制命令
root ALL=(ALL) NOPASSWD: /usr/bin/tee /sys/class/backlight/*/brightness

步骤二:创建 ACPI 轮询核心脚本

bash 复制代码
sudo nano /usr/local/bin/mbp-lid-acpi.sh

#!/bin/bash
# MBP纯ACPI合盖/开盖控制脚本 | 无button目录专用 | 7×24运行
# 日志路径(/tmp权限全开,必生成日志,可随时查看)
LOG_FILE="/tmp/mbp-lid-acpi.log"
# ✅ 固定使用你能识别的ACPI LID0路径(绝对可靠)
LID0_PATH="/proc/acpi/button/lid/LID0/state"
# ✅ 自动识别背光路径(兼容Intel/M系列MBP)
BACKLIGHT_PATH=$(ls -d /sys/class/backlight/* 2>/dev/null | head -1)
# 亮度配置(可自定义:开盖恢复50%亮度,满亮度改为 $MAX_BRIGHT 即可)
MAX_BRIGHT=$(cat ${BACKLIGHT_PATH}/max_brightness)
RESUME_BRIGHT=$((MAX_BRIGHT / 2))
# 记录上一次状态,避免重复执行操作(降低资源占用)
LAST_LID_STATE=""

# 初始化日志
echo -e "=====================================" >> $LOG_FILE
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ MBP ACPI LID0轮询服务启动" >> $LOG_FILE
echo "[$(date)] 背光控制路径:$BACKLIGHT_PATH" >> $LOG_FILE
echo "[$(date)] 屏幕最大亮度:$MAX_BRIGHT | 开盖恢复亮度:$RESUME_BRIGHT" >> $LOG_FILE
echo "[$(date)] ✅ 开始每秒检测合盖/开盖状态..." >> $LOG_FILE

# 无限后台轮询(核心逻辑,资源占用≈0)
while true; do
    # 100%读取合盖/开盖状态
    CURRENT_LID_STATE=$(cat ${LID0_PATH} | awk '{print $2}')
    
    # 仅当状态发生变化时执行操作(避免重复写入亮度)
    if [ "${CURRENT_LID_STATE}" != "${LAST_LID_STATE}" ]; then
        echo -e "\n[$(date)] ⚡ 状态变化:${LAST_LID_STATE} → ${CURRENT_LID_STATE}" >> $LOG_FILE
        
        # 合盖 → 强制灭屏(亮度0,彻底解决发烫)
        if [ "${CURRENT_LID_STATE}" = "closed" ]; then
            echo 0 | sudo tee ${BACKLIGHT_PATH}/brightness > /dev/null
            echo "[$(date)] ✅ 合盖成功 → 屏幕已熄灭,无发烫" >> $LOG_FILE
        
        # 开盖 → 自动亮屏(恢复预设亮度)
        elif [ "${CURRENT_LID_STATE}" = "open" ]; then
            echo ${RESUME_BRIGHT} | sudo tee ${BACKLIGHT_PATH}/brightness > /dev/null
            echo "[$(date)] ✅ 开盖成功 → 屏幕已亮起(亮度${RESUME_BRIGHT})" >> $LOG_FILE
        fi
        
        # 更新上一次状态
        LAST_LID_STATE=${CURRENT_LID_STATE}
    fi
    
    # 每秒检测一次,CPU占用<0.1%,完全不影响NAS/Frigate运行
    sleep 1
done

步骤三:创建 systemd 系统服务(开机自启 + 7×24 守护)

bash 复制代码
sudo nano /etc/systemd/system/mbp-lid-acpi.service

[Unit]
Description=MBP ACPI LID0合盖开盖控制服务(无button目录专用,7×24运行)
After=multi-user.target network-online.target
Wants=network-online.target
# 依赖网络服务,确保NAS网络就绪后启动
Requires=network.target

[Service]
# 后台持续运行模式
Type=simple
# 执行核心脚本
ExecStart=/bin/bash /usr/local/bin/mbp-lid-acpi.sh
# 关键配置:意外退出/崩溃后自动重启,永不间断
Restart=always
# 重启间隔3秒,避免频繁重启
RestartSec=3
# 以root权限执行,无任何权限限制
User=root
# 忽略执行中的无关错误,保证服务稳定
IgnoreSIGPIPE=no

[Install]
# 多用户模式下开机自启(非GUI环境必选)
WantedBy=multi-user.target

步骤 4:赋权 + 启用服务(一键完成,立即生效)

bash 复制代码
# 1. 给脚本执行权限
sudo chmod +x /usr/local/bin/mbp-lid-acpi.sh

# 2. 重载系统服务配置,使新服务生效
sudo systemctl daemon-reload

# 3. 设置开机自启 + 立即启动服务
sudo systemctl enable --now mbp-lid-acpi.service

# 4. 验证服务状态(确保运行中,无报错)
sudo systemctl status mbp-lid-acpi.service

步骤5:查看日志

bash 复制代码
tail -f /tmp/mbp-lid-acpi.log

运行截图:

相关推荐
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [fs]mnt_idmapping
linux·笔记·学习
optimistic_chen3 小时前
【Redis 系列】常用数据结构---Hash类型
linux·数据结构·redis·分布式·哈希算法
我就是你毛毛哥3 小时前
Linux 定时备份 MySQL 并推送 Gitee
linux·mysql
儒道易行3 小时前
平凡的2025年终总结
网络·安全·web安全
旖旎夜光3 小时前
Linux(7)(下)
linux·学习
吃螺丝粉3 小时前
zookeeper权限设置
linux·运维·服务器
乾元3 小时前
数据中心流量工程(TE)优化:当 AI 成为解决“维度诅咒”的唯一操纵杆
运维·服务器·网络·人工智能·架构·自动化
Andy工程师3 小时前
网络响应码(HTTP 状态码)和解析方法
网络·网络协议·http
一只旭宝4 小时前
Linux专题十三:shell脚本编程
linux·运维·服务器