电池健康度是通过energy-full除以energy-full-design得到的比值。这个比值能反映真实电荷容量的衰减情况,不会受到percentage或capacity等容易被伪造的字段干扰。不过,判断电池老化程度时,还需要结合自身设备的历史数据趋势来综合考量。

直接看 energy-full 和 energy-full-design 两个值,比值就是当前健康度(损耗百分比 = 100% − 健康度)。 其他参数如 charge-cycles 只能辅助判断,不能单独用来定义“损耗程度”。
为什么只看这两个 energy 值?
Linux 内核通过电池的 SMBus/ACPI 接口读取的是真实电荷容量(单位:微瓦时 μWh),不是估算值。其中:
energy-full-design是出厂标称最大容量,写死在电池固件里,永不改变energy-full是当前可充入的最大电量,随老化持续下降- 两者的比值(
energy-full÷energy-full-design)才是客观的健康度,比如 4200000 / 5000000 = 0.84 → 健康度 84%,已损耗 16%
别被 percentage 迷惑——它只是当前电量占 energy-full 的比例,和老化无关;也别轻信 capacity 字段,某些厂商固件会伪造该值,不可靠。
怎么快速提取这两个数值?
用 upower 最稳,无需安装:
- 先找电池路径:
upower -e | grep battery(常见是/org/freedesktop/UPower/devices/battery_BAT0) - 再查关键字段:
upower -i $(upower -e | grep battery) | grep -E "energy-full|energy-full-design" - 如果输出为空,说明设备未被 UPower 正确识别,可 fallback 到 sysfs:
cat /sys/class/power_supply/BAT0/energy_full和cat /sys/class/power_supply/BAT0/energy_full_design
注意:BAT0 可能是 BAT1 或 axp288_fuel_gauge(部分 ARM 设备),用 ls /sys/class/power_supply/ 确认实际目录名。
charge-cycles 数值怎么看?
charge-cycles 是计数器,记录完整充放电次数(从 0% 到 100% 再回到 0%),但它有严重局限:
- 很多笔记本(尤其是 Dell、Lenovo 部分型号)根本不报告该值,字段显示
0或空白 - 有些固件只在 AC 连接时才累加,插着电源频繁小充小放会被漏计
- 即使数值可信,也要结合健康度看:比如
charge-cycles: 420但energy-full仍是设计值的 95%,说明使用习惯好、老化慢
它更适合做趋势参考(每月记一次,看是否异常飙升),而不是单次判定损耗。
有个容易被忽视的要点:不同电池批次的 energy-full-design 值本身就存在 ±3% 的差异,所以对比两台同型号机器的健康度没有意义;重要的是你自己这台设备的数值变化趋势——建议每季度运行一次命令并保存记录,这比绝对值更具诊断价值。