linux下无通用命令直接读取cpu实时运行电压,sensors是最可靠方式但依赖硬件传感器及驱动支持,dmidecode仅显示电源规格,/sys/class/hwmon/需手动匹配且单位为微伏,acpi和upower不提供cpu核心电压信息。

Linux下直接读取CPU当前运行电压,没有统一、通用、100%可靠的命令——因为电压传感器是否暴露、是否被内核驱动支持、是否被用户空间工具识别,完全取决于硬件型号、主板厂商、芯片组和内核版本。实际能用的手段有限,且结果常为近似值或静态标称值,而非实时动态核心电压(Vcore)。
sensors 命令是唯一实用的实时电压查看方式
sensors 是目前最可靠、覆盖最广的实时电压读取入口,但它依赖两个前提:硬件传感器存在,且对应内核模块已加载。
- 先确认是否已安装:
sudo apt install lm-sensors(Debian/Ubuntu)或sudo dnf install lm_sensors(Fedora/RHEL) - 必须运行一次
sensors-detect(全程按回车默认 YES),它会尝试加载 i2c-i801、it87、k10temp 等常见传感器驱动 - 执行
sensors后,查找含in0、in1、Vcore、+12V、+5V、VDDIO等关键词的行;不同主板命名差异极大,例如 ASUS 主板可能显示为cpu_vid,而某些 AMD 平台只暴露VDDNB - 注意:
sensors输出中带(crit = ...)的项通常是阈值,不是实测值;真正可信的是未标注 crit 或 min/max 的那一列数字(单位 V)
dmidecode 只能查电源规格,不能反映当前电压
sudo dmidecode -t 39 或 sudo dmidecode | grep -i voltage 返回的是 SMBIOS 中固化记录的“电源设计规格”,比如“Input Voltage Range: 100 - 240 VAC”。它和 CPU 实际运行电压(通常 0.8–1.4 V)毫无关系,也完全不随负载变化。
- 该命令对笔记本、OEM 品牌机(Dell/HP/Lenovo)尤其不可靠——很多 BIOS 根本不填此项,返回空或无效字段
- 不要把它和实时监控混淆;它适合排查电源适配器兼容性,不适合做电压监控
/sys/class/hwmon/ 是底层路径,但需手动匹配传感器
所有 sensors 显示的数据,最终都来自 /sys/class/hwmon/ 下的文件。你可以直接读取,但必须自己定位哪个 hwmon 对应哪个芯片。
- 先列出所有监控设备:
ls /sys/class/hwmon/,常见如hwmon0、hwmon1 - 进任一目录,看
name文件内容:cat /sys/class/hwmon/hwmon0/name,输出可能是it8728或k10temp - 再找电压文件:
ls /sys/class/hwmon/hwmon0/in*_input,然后读值:cat /sys/class/hwmon/hwmon0/in0_input(单位是微伏 μV,需除以 1000 得 mV) - 风险点:部分 in*_input 文件可能返回 0 或 -ENODEV,说明该通道未启用或无物理传感器;硬读可能触发内核警告
ACPI 和 upower 完全不提供 CPU 核心电压信息
acpi -V 和 upower -d 面向的是电池、AC 适配器、系统级功耗等电源管理抽象层,它们根本看不到 CPU VRM(电压调节模块)的输出。试图用这些命令查 Vcore,只会得到空结果或误导性字段(如 Design Voltage)。
- 笔记本上
acpi -V显示的 “Voltage” 通常是电池单节标称电压(如 11.1 V),和 CPU 无关 -
upower的数据来源是/sys/class/power_supply/,这个目录下只有 BATx 和 ACAD,没有 CPU 供电节点 - 别被网上过时教程带偏——2026 年主流内核仍不通过 ACPI 表暴露动态 Vcore
真正有效的电压监控永远绑定具体硬件:你得知道主板用了哪家传感器芯片(ITE、Nuvoton、ASUS EC),再确认对应驱动(如 it87)是否启用。没有通用捷径,sensors 的输出里哪一行是 Vcore,只能靠经验比对厂商文档或反复验证负载变化时的数值漂移。忽略这点,所有“一键查电压”的脚本都会在换一台机器后失效。











