告别第三方工具!macOS Terminal 直接查看更真实的电池健康度

告别第三方工具!macOS Terminal 直接查看更真实的电池健康度

博客:https://www.mintimate.cn

Mintimate’s Blog,只为与你分享

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

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

系统设置内的健康于是就好奇,是不是有其他地方有电池的日志?

为什么呢?确实有,省流精简版本,Terminal 运行:

代码语言:bash复制ioreg -rn AppleSmartBattery | awk '/AppleRawMaxCapacity/ {raw=$NF} /DesignCapacity/ {design=$NF} END {printf "电池健康度: %.1f%%\n", raw/design*100}'如果想获取更详细的数据,可以接着往下看。

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

https://www.manpagez.com/man/8/ioreg/我们可以用这个命令查询设备树相关信息。常用的命令:

选项

说明

ioreg -l

显示所有设备的完整属性(比较长)

ioreg -p IODeviceTree

查看设备树(类似 Linux 的 lspci)

ioreg -p IOService

默认平面,显示服务层设备信息

ioreg -c IOService

仅显示 IOService 类及其子类的设备

ioreg -k BatteryPercent

查找包含 BatteryPercent 属性的设备(如电池信息)

ioreg -n AppleSmartBattery

显示名为 AppleSmartBattery 的设备信息

ioreg -a -x

以 XML 格式输出,适合脚本解析

ioreg -r -d 1

递归查询并限制深度为 1,即: 仅显示顶层设备(常用)

IODeviceTree电池健康度查看电池健康就是这个AppleSmartBattery:

查看设备详情主要的信息,配合 AI 分析,应该是:

电池状态

字段

说明

CurrentCapacity

100

当前电量百分比(100% 表示满电)

MaxCapacity

100

电池最大容量(百分比)

FullyCharged

Yes

是否已充满电

IsCharging

No

当前是否在充电

ExternalConnected

Yes

是否连接了电源适配器

ExternalChargeCapable

Yes

电源适配器是否支持充电

电池硬件信息

字段

说明

DeviceName

"bq40z651"

电池控制器芯片型号(TI 的 BQ40Z651 电量计)

DesignCapacity

6075

电池设计容量(单位:mAh)

NominalChargeCapacity

5107

当前实际可用容量(可能因老化降低)

CycleCount

216

电池循环次数(216 次)

DesignCycleCount9C

1000

电池设计循环寿命(1000 次)

Temperature

3061

电池温度(单位:0.1K,3061 = 30.61°C)

Serial

"F8Y3******LTAR"

电池序列号

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

代码语言:bash复制ioreg -n AppleSmartBattery -r | grep -E "CurrentCapacity|FullyCharged|IsCharging|ExternalConnected"AppleSmartBattery递归配合grep你也可以再优化一下:

代码语言:bash复制# 提取为 key = value

ioreg -n AppleSmartBattery -r | grep -Eo '"CurrentCapacity" = [0-9]+|"FullyCharged" = \w+|"IsCharging" = \w+|"ExternalConnected" = \w+'优化读取AppleRawMaxCapacity 是当前的电池容量,DesignCapacity 为设计容量;那么配合 grep 来查看电池的健康度:

代码语言:bash复制# 输出 电池健康度: 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所以,一切从简,为什么不用一条命令就直接查询呢🤔?

相关推荐

新生宝宝吃脚的原因,看完你就懂了,先别急着阻止
必发365娱乐在线官网

新生宝宝吃脚的原因,看完你就懂了,先别急着阻止

📅 07-08 👁️ 6871
电子版的照片怎么做,制作电子版照片教程
365娱乐app官方版下载

电子版的照片怎么做,制作电子版照片教程

📅 06-29 👁️ 4126
小米5现在怎么买?告诉你最新的购买渠道!
全球最大体育平台365

小米5现在怎么买?告诉你最新的购买渠道!

📅 06-28 👁️ 8325