菜鸟科技网

Linux sensors命令如何查看硬件温度?

在Linux系统中,硬件监控是系统管理和故障排查的重要环节,而sensors命令作为lm-sensors工具包的核心组件,能够实时读取系统硬件传感器数据,包括温度、电压、风扇转速等关键信息,本文将详细介绍sensors命令的安装、使用方法、常见参数及实际应用场景,帮助用户全面掌握这一实用工具。

Linux sensors命令如何查看硬件温度?-图1
(图片来源网络,侵删)

安装与配置

sensors命令依赖于lm-sensors软件包,不同Linux发行版的安装命令略有差异,在基于Debian/Ubuntu的系统中,可通过sudo apt-get install lm-sensors安装;在CentOS/RHEL系统中,使用sudo yum install lm-sensorssudo dnf install lm-sensors,安装完成后,需运行sudo sensors-detect进行硬件检测,该脚本会自动扫描系统中的传感器芯片,并提示用户加载相应的内核模块,检测过程中,建议对提示的模块选择“YES”以支持完整的传感器功能,配置完成后,执行sensors命令即可查看当前硬件传感器的原始数据。

命令基本用法

sensors命令的基本格式为sensors [选项] [芯片名称],常用选项包括:

  • -j:以JSON格式输出,便于脚本解析;
  • -u:显示原始数值,不进行单位转换;
  • -f:使用华氏温度单位(默认为摄氏度); sensors -j会输出类似{"coretemp-isa-0000":{"Core 0":{"temp1_input":45.000}}}的JSON数据,适合自动化监控,若需查看特定芯片的信息,可使用sensors coretemp-isa-0000,精确指定监控目标。

输出数据解析

sensors的输出通常按芯片分类,每个芯片下列出具体的传感器数值,以常见的温度传感器为例,输出可能包含以下字段:

  • temp1_input:当前温度值(单位:℃);
  • temp1_max:温度阈值上限;
  • temp1_crit:临界温度值,超过此值可能触发硬件保护;
  • fan1_input:风扇当前转速(单位:RPM);
  • in0_input:电压值(单位:V); acpitz-acpi-0芯片的输出可能显示temp1_input: 38.000,表示当前温度为38℃,对于电压传感器,in0_input: 12.100表示12V电压的实际值为12.1V。

高级应用与脚本化

在实际运维中,常需将sensors命令与脚本结合实现自动化监控,使用watch -n 5 'sensors'每5秒刷新一次传感器数据,实时观察硬件状态,结合grepawk可提取关键信息,如sensors | grep "Core 0" | awk '{print $3}'仅输出核心0的温度值,对于服务器环境,可通过编写Shell脚本定期记录传感器数据到日志文件,或设置温度阈值触发告警,当CPU温度超过70℃时发送邮件通知,脚本逻辑如下:

Linux sensors命令如何查看硬件温度?-图2
(图片来源网络,侵删)
temp=$(sensors | grep "Core 0" | awk '{print $3}' | cut -d. -f1)
if [ $temp -gt 70 ]; then
    echo "警告:CPU温度过高!" | mail -s "硬件告警" admin@example.com
fi

常见问题与解决方案

  1. 传感器数据不显示:可能是内核模块未正确加载,可通过sudo modprobe [模块名]手动加载,或检查/etc/modules确保开机自动加载。
  2. 数据不准确:部分传感器需要校准,可通过sensors -s保存当前配置,或修改/etc/sensors3.conf调整阈值参数。
  3. 权限不足:普通用户可能无法读取传感器数据,需将用户加入plugdev组或使用sudo执行。

相关问答FAQs

Q1: 如何让sensors命令开机自动运行?
A1: 可通过创建systemd服务实现,首先编写服务单元文件/etc/systemd/system/sensors-monitor.service如下:

[Unit]
Description=Hardware Sensors Monitor
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/sensors -s
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

然后执行sudo systemctl enable sensors-monitor即可开机自动加载传感器配置。

Q2: 如何过滤sensors输出只显示关键信息?
A2: 可结合grep和正则表达式实现,仅显示温度和风扇信息:

sensors | grep -E "(temp|fan)_input"

若需更精确的过滤,可指定芯片名称,如sensors coretemp-isa-0000 | grep "Core",仅输出核心温度数据。

分享:
扫描分享到社交APP
上一篇
下一篇