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

运行截图:

相关推荐
亚空间仓鼠15 小时前
OpenEuler系统常用服务(五)
linux·运维·服务器·网络
聊点儿技术15 小时前
CDN调度失准导致跨省流量浪费?在GSLB层用IP归属地查询实现精准就近接入
网络·ip·ip归属地查询·ip地址查询·ip离线库·cdn调度
咸鱼嵌入式16 小时前
【AutoSAR】详解PDUR模块
网络
戮戮16 小时前
Spring Cloud Gateway 零拷贝参数校验:一种高性能网关架构实践
java·网络·架构·gateway
minji...16 小时前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
虚伪的空想家16 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
[ ]89816 小时前
Stack_MLAG_知识点梳理
网络·笔记·网络协议
上海云盾-小余17 小时前
精准抵御流量攻击:高防 IP + 游戏盾组合部署实战详解
网络·tcp/ip·游戏
the sun3417 小时前
从 QEMU 直接启动到 U-Boot 引导:嵌入式 Linux 启动流程的本质差异
linux·运维·服务器
草莓熊Lotso17 小时前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·linux·运维·服务器·数据库·c++·mysql