告别第三方工具!macOS Terminal 直接查看更真实的电池健康度
Mintimate
2025年07月06日 22:46
收录于文集
共5篇

事件背景

起因是之前发现 21 款的 MBP 电池不耐用了,所以就去 Apple Store 上检测了一下电脑;检测后电池寿命是 82%,还不能换电池……

不过有趣的是,确实和系统设置内的电池健康度不一样(86%):

系统设置内的健康

于是就好奇,是不是其他地方有电池的日志?

哇 ( ̄∇ ̄)

确实有,省流版本,Terminal 运行:

代码块
JavaScript
自动换行
复制代码
ioreg -rn AppleSmartBattery | awk '/AppleRawMaxCapacity/ {raw=$NF} /DesignCapacity/ {design=$NF} END {printf "电池健康度: %.1f%%\n", raw/design*100}'
复制成功

如果想获取更详细的数据,可以接着往下看。

ioreg 命令

网上冲浪🏄‍♂️了一下,发现 macOS 自带  这个用于查询 I/O 注册表和信息结构:

  • https://www.manpagez.com/man/8/ioreg/

我们可以用这个命令查询设备树相关信息。常用的命令:

IODeviceTree

电池健康度

查看电池健康就是这个:

查看设备详情

主要的信息,配合 AI 分析,应该是:

电池状态

电池状态

电池硬件信息

电池硬件信息

如果我们想过滤看看电池是否在充电,配合 grep 我们过滤一下:

代码块
JavaScript
自动换行
复制代码
ioreg -n AppleSmartBattery -r | grep -E "CurrentCapacity|FullyCharged|IsCharging|ExternalConnected"
复制成功

AppleSmartBattery递归配合grep

你也可以再优化一下:

代码块
JavaScript
自动换行
复制代码
# 提取为 key = value
ioreg -n AppleSmartBattery -r | grep -Eo '"CurrentCapacity" = [0-9]+|"FullyCharged" = \w+|"IsCharging" = \w+|"ExternalConnected" = \w+'
复制成功

优化读取

AppleRawMaxCapacity 是当前的电池容量,DesignCapacity 为设计容量;那么配合  来查看电池的健康度:

代码块
JavaScript
自动换行
复制代码
# 输出 电池健康度: 81.6%
ioreg -rn AppleSmartBattery | awk '/AppleRawMaxCapacity/ {raw=$NF} /DesignCapacity/ {design=$NF} END {printf "电池健康度: %.1f%%\n", raw/design*100}'
# 输出 当前最大容量: 4957 mAh | 设计容量: 6075 mAh | 循环次数 216 次 | 健康度: 81.6%
ioreg -rn AppleSmartBattery | awk '/AppleRawMaxCapacity/{raw=$NF} /DesignCapacity/{design=$NF} /CycleCount/{cycle=$NF} END{printf "当前最大容量: %d mAh | 设计容量: %d mAh | 循环次数 %d 次 | 健康度: %.1f%%\n", raw, design, cycle, (raw/design)*100}'
复制成功

电池健康度

写在最后

其实,最开始我是在 stackoverflow 上看到 ioreg 的使用的。

后来是怎么发现电池健康度的测算呢? 是发现 coconutBattery 这个软件,读取的字段就是 AppleRawMaxCapacity 和 DesignCapacity:

coconutBattery

最后,如果你觉得本篇教程对你有帮助,欢迎加入我们的开发者交流群: 812198734 ,一起交流学习,共同进步。