Python技术迷

smctl:Mac 长期插电党,终于能自己管电池了

长期把 MacBook 插着用,或者拿 Mac 当小服务器,最烦的不是性能不够,是电池一直顶在 100%。macOS 那个优化充电吧,说真的,有点黑盒。它觉得该停就停,它觉得该充就充,用户基本只能猜。

最近刷到一个项目叫 smctl,东哥第一反应是:好家伙,终于有人把 Mac 这些藏起来的硬件旋钮做成 CLI 了。

它能干的事挺直接:电池充电限制、风扇控制、温度和功耗查看,全走命令行。项目页给的例子也很粗暴:smctl battery maintain 70-80,电量就在 70% 到 80% 之间浮动;smctl fan profile quiet 可以套风扇曲线;smctl sensors --watch 直接看温度、风扇转速和功耗。

Image

这个浮动区间我挺喜欢。不是死卡一个 80%,而是留一点 dead-band,机器不用反复在边界抽风。以前搞服务器、UPS、NAS 这类东西,东哥最怕那种“看着自动,其实不知道它啥时候动”的策略。

它还有个开发者会在意的点:支持 SSH、JSON 输出,适合塞进脚本和监控里。比如 Mac mini 当家庭服务,电池功能用不上,但温度、风扇、功耗、告警这套就挺香。项目还写了 thermal safety guard,温度不对会交回系统控制,别上来就把风扇锁死瞎玩。

Image

安装也不复杂:

brew install leaperone/smctl/smctl
sudo smctl daemon install

东哥提醒一句,这类工具毕竟是碰 SMC,不是普通菜单栏小玩具。配置文件、root daemon、日志、回滚都得看一眼。项目页也说了,Intel Mac 目前还不是完整支持,Apple Silicon、macOS 14+ 才是重点覆盖范围。

但如果你是 MacBook 长插电办公,或者家里真有台无头 Mac 在跑服务,smctl 这种东西就很对味:不花哨,能 SSH,能 JSON,出问题还能知道它到底在干嘛。

GitHub地址:leaperone/smctl