控快速上手:用 lm-sensors 三步拿到溫度與風(fēng)扇轉(zhuǎn)速(免費(fèi)開(kāi)源))
Linux 硬件監(jiān)控快速上手用 lm-sensors 三步拿到溫度與風(fēng)扇轉(zhuǎn)速免費(fèi)開(kāi)源【免費(fèi)下載鏈接】lm-sensorslm-sensors repository項(xiàng)目地址: https://gitcode.com/gh_mirrors/lm/lm-sensors凌晨?jī)牲c(diǎn)告警系統(tǒng)彈出來(lái)機(jī)柜里那臺(tái)服務(wù)器 CPU 拉滿、風(fēng)扇狂轉(zhuǎn)你卻只能看到占用率看不到溫度。這正是 Linux 硬件監(jiān)控工具 lm-sensors 要解決的事它通過(guò)內(nèi)核驅(qū)動(dòng)讀取主板的溫度、風(fēng)扇轉(zhuǎn)速和電壓一條命令就能把讀數(shù)擺在你面前。先跑起來(lái)從源碼到第一次讀數(shù)的最短路徑發(fā)行版?zhèn)}庫(kù)里如果有包直接用包管理器裝 lm-sensors 即可步驟完全一樣。想用最新代碼就從源碼編譯前提是系統(tǒng)里有 gcc、make、bison、flex# 克隆源碼并進(jìn)入目錄 git clone https://gitcode.com/gh_mirrors/lm/lm-sensors cd lm-sensors # 編譯并安裝到系統(tǒng) make all sudo make installlm-sensors 安裝完成后下一步是檢測(cè)。用 root 跑sudo sensors-detect它會(huì)逐個(gè)掃描 I2C 和 SMBus 總線尋找傳感器芯片最后打印一份該加載的驅(qū)動(dòng)模塊清單。掃描到某條總線時(shí)詢問(wèn)是否探測(cè)一路選 yes 才能覆蓋所有可能位置。拿到清單后按提示 modprobe比如 Intel CPU 就是sudo modprobe coretemp。最后運(yùn)行sensors就能看到這臺(tái)機(jī)器的第一組讀數(shù)coretemp-isa-0000 Adapter: ISA adapter Core 0: 56.0°C (high 80.0°C) Core 1: 52.0°C in0: 1.03 V (min 0.00 V, max 1.71 V) 某行顯示[err]表示該傳感器讀不出來(lái)別慌文末有排查方法。看懂讀數(shù)chip、傳感器編號(hào)和單位各是什么上面每一行輸出都對(duì)應(yīng)一個(gè)概念chip 行coretemp-isa-0000驅(qū)動(dòng)名 總線 地址。coretemp是 Intel CPU 溫度芯片的驅(qū)動(dòng)isa-0000是它的掛載位置。機(jī)器上有幾顆芯片就有幾個(gè)這樣的塊。傳感器編號(hào)Core 0、in0芯片上物理通道的序號(hào)。編號(hào)跟引腳走不跟含義走所以第一眼看到的in0未必是你想的那個(gè)電壓。讀數(shù)與上限56.0°C是當(dāng)前值(high 80.0°C)是報(bào)警上限超過(guò)之后該行會(huì)打印ALARM。單位溫度攝氏度、電壓 V、風(fēng)扇轉(zhuǎn)速 RPM。sensors加-f切華氏度顯示加-j輸出 JSON方便寫(xiě)腳本取數(shù)。讓它說(shuō)人話用 sensors3.conf 改傳感器名并套用主板配置直接按引腳編號(hào)顯示名字看著費(fèi)勁。sensors3.conf 配置就是用來(lái)把這些編號(hào)改寫(xiě)成你能看懂的名字的。主配置文件在/etc/sensors3.conf倉(cāng)庫(kù) etc/ 下有一份示例可以參考而 configs/ 主板配置庫(kù)已經(jīng)收了華碩、技嘉、微星等廠商數(shù)百個(gè)型號(hào)的現(xiàn)成配置。最快的路子在配置庫(kù)里找到你型號(hào)對(duì)應(yīng)的文件把里面的 chip 段拷進(jìn) sensors3.conf。手寫(xiě)的版本也就幾行的事chip coretemp-isa-0000 label temp1 CPU Core 0 # 把 temp1 的顯示名改成你看得懂的 label temp2 CPU Core 1 compute in0 *0.95 # 按 0.95 的系數(shù)校正 in0 電壓讀數(shù) ignore in2 # 這個(gè)電壓通道用不到隱藏掉改完標(biāo)簽只是換了顯示名不影響實(shí)際采集如果你的型號(hào)不在庫(kù)里照著同樣的格式自己補(bǔ)一個(gè)文件提回項(xiàng)目下一個(gè)用同款硬件的人就能直接復(fù)用。從「看」到「管」報(bào)警閾值和風(fēng)扇調(diào)速的最小配置拿到讀數(shù)后第一件事是報(bào)警。在 sensors3.conf 對(duì)應(yīng) chip 段里加一行set temp1_crit 85關(guān)鍵溫度上限 85 度執(zhí)行sensors -s把限值寫(xiě)進(jìn)芯片再啟動(dòng) sensord 守護(hù)進(jìn)程任何傳感器越限它都會(huì)記一條 ALARM 日志。想讓風(fēng)扇隨溫度自動(dòng)調(diào)速跑一次sudo pwmconfig按提示走完幾個(gè)問(wèn)題就會(huì)生成 fancontrol.conf關(guān)鍵行長(zhǎng)這樣INTERVAL10 # 每 10 秒重新計(jì)算一次 DEVPATHhwmon0devices/platform/coretemp.0 DEVNAMEhwmon0coretemp FCTEMPShwmon1/pwm1hwmon0/temp1_input # 用 CPU 溫度驅(qū)動(dòng)這組風(fēng)扇 FCFANShwmon1/pwm1hwmon1/fan1_input # 被調(diào)速的風(fēng)扇 MINTEMPhwmon1/pwm120 # 20 度以下基本不轉(zhuǎn) MAXTEMPhwmon1/pwm160 # 60 度拉滿邏輯就一句話每隔 INTERVAL 秒看一眼 FCTEMPS 里的溫度把 FCFANS 的風(fēng)速調(diào)到讓溫度落在 MINTEMP 與 MAXTEMP 之間。生成文件后用sudo fancontrol前臺(tái)跑起來(lái)或者用 prog/init/ 里的啟動(dòng)腳本注冊(cè)成服務(wù)開(kāi)機(jī)自啟。卡住了怎么辦三個(gè)高頻故障的檢查命令現(xiàn)象檢查命令解法sensors無(wú)輸出或整塊芯片[err]lsmod \| grep -E coretemp\|nct6775對(duì)應(yīng)驅(qū)動(dòng)沒(méi)加載重跑 sensors-detect 檢測(cè)并 modprobe 建議的模塊sensors-detect 找不到任何傳感器芯片i2cdetect -l內(nèi)核沒(méi)開(kāi) I2C 或 Hardware Monitoring 選項(xiàng)或芯片壓根沒(méi)有驅(qū)動(dòng)換更新的內(nèi)核光升級(jí) lm-sensors 沒(méi)用個(gè)別傳感器顯示[err]逐個(gè)rmmod驅(qū)動(dòng)后重跑sensors哪個(gè)驅(qū)動(dòng)卸掉后錯(cuò)誤消失問(wèn)題就出在它身上記錄過(guò)程反饋給對(duì)應(yīng)內(nèi)核驅(qū)動(dòng)的維護(hù)者接入你現(xiàn)有的監(jiān)控體系Prometheus Grafananode_exporter 的 collector 直接讀 /sys 下的 hwmon 數(shù)據(jù)和 lm-sensors 同源不用額外寫(xiě)腳本。Zabbix寫(xiě)一個(gè) UserParameter 腳本包住sensors -j把返回的 JSON 交給 Zabbix 解析。Nagios / Icinga寫(xiě)個(gè)小插件grepsensors輸出里的讀數(shù)跟閾值比一下輸出 OK 或 CRIT。收尾溫度、風(fēng)扇、電壓都裝進(jìn)了一條命令里閾值報(bào)警和風(fēng)扇調(diào)速也都有了最小可用的配置。詳細(xì)行為可以看 doc/ 下的官方文檔你的主板配置缺了就照著 configs/ 的格式補(bǔ)一份提回去。下一步建議讓 sensord 先跑滿一天拿到一輪連續(xù)數(shù)據(jù)再?zèng)Q定哪些閾值值得配告警。【免費(fèi)下載鏈接】lm-sensorslm-sensors repository項(xiàng)目地址: https://gitcode.com/gh_mirrors/lm/lm-sensors創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考