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

运行截图:

相关推荐
AAA@峥3 分钟前
CentOS Stream8 基于 Packstack 搭建 OpenStack 云平台全流程实战
linux·centos·openstack
汤永红7 分钟前
gtk-x11-2.0.so.0
linux·运维·服务器
思茂信息23 分钟前
CST 辐射边界反射过高优化方法
网络·emc·emi·cst·仿真软件·电磁仿真
Yana.nice30 分钟前
Linux logrotate 日志切割未生效
linux·运维·服务器
奥莱维38 分钟前
经济型酒店智能客控轻量化方案
大数据·网络·人工智能
Увидимся вчера1 小时前
绿盟堡垒机自动化任务—自动改密失败
linux·服务器·自动化
电商API_180079052471 小时前
导购比价小程序场景|京东联盟商品详情对接方案|多规格图文拉取技术实操
网络·小程序·网络爬虫
拾光Ծ1 小时前
【Linux网络】网络通信实战:UDP & TCP Socket编程实现Echo Server
linux·网络·网络协议·tcp/ip·udp·线程池
灯澜忆梦4 小时前
GO_网络编程---网络协议
网络·网络协议·golang
EasyGBS4 小时前
政务视频资源汇聚:国标GB28181视频平台EasyGBS在“一网统管”中的定位和落地路径
网络·音视频·政务