文章目錄
- 前言
- 專案需求
- 需求具體實作
- 1 lm_sensors工具安裝
- 2 每行腳本具體說明
- 3 終極代碼實作(放大招)
前言
各位小伙伴好久不見,最近作業和生活上瑣事比較多,所以一直沒更文,今天忙里偷閑,跟各位更新一篇拿來即用腳本文章,還望各位笑納,另外附加介紹每一個的陳述句的使用以及含義,話不多說,直接開始我們今天的正題:
專案需求
我們采購的作業站老是因為CPU和顯卡溫度高而導致服務器掛掉,因此領導讓寫一個監控CPU的溫度腳本來實時監測溫度,并把例外情況輸出到服務器
需求具體實作
1 lm_sensors工具安裝
目前市面上通過lm_sensors工具查看主板上多核CPU中溫度最高的內核
腳本依賴:lm_sensors工具,可以執行下面陳述句進行安裝,如果安裝不了請更換YUM源
工具安裝命令:yum install -y lm_sensors
注意事項:
1.“sensors coretemp-isa-0000”中后面的引數視主機實際的引數而定
2.目前vmware虛擬機中lm_sensors工具無法查看硬體溫度
2 每行腳本具體說明
[root@dana ~]# sensors coretemp-isa-0000
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +33.0°C (high = +83.0°C, crit = +93.0°C)
Core 0: +32.0°C (high = +83.0°C, crit = +93.0°C)
Core 1: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 2: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 3: +31.0°C (high = +83.0°C, crit = +93.0°C)
Core 4: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 5: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 8: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 9: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 10: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 11: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 12: +31.0°C (high = +83.0°C, crit = +93.0°C)
Core 13: +28.0°C (high = +83.0°C, crit = +93.0°C)
這條指令主要是看CPU溫度的所有資訊,第一個溫度代表當前設備溫度值,high = +83.0°C表示超過83度CPU溫度過高,crit = +93.0°C表示超過93度CPU就會啥訓
[root@dana ~]# sensors coretemp-isa-0000 | tail -n +3
Package id 0: +33.0°C (high = +83.0°C, crit = +93.0°C)
Core 0: +31.0°C (high = +83.0°C, crit = +93.0°C)
Core 1: +27.0°C (high = +83.0°C, crit = +93.0°C)
Core 2: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 3: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 4: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 5: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 8: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 9: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 10: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 11: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 12: +31.0°C (high = +83.0°C, crit = +93.0°C)
Core 13: +28.0°C (high = +83.0°C, crit = +93.0°C)
這條指令中tail -n +3表示顯示檔案從第3行至檔案末尾的檔案內容
[root@dana ~]# sensors coretemp-isa-0000 | tail -n +3 |tr -s " "
Package id 0: +33.0°C (high = +83.0°C, crit = +93.0°C)
Core 0: +32.0°C (high = +83.0°C, crit = +93.0°C)
Core 1: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 2: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 3: +32.0°C (high = +83.0°C, crit = +93.0°C)
Core 4: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 5: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 8: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 9: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 10: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 11: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 12: +31.0°C (high = +83.0°C, crit = +93.0°C)
Core 13: +29.0°C (high = +83.0°C, crit = +93.0°C)
這條指令中tr -s " “表示洗掉” ",可以理解為洗掉空格
[root@dana ~]# sensors coretemp-isa-0000 | tail -n +3 |tr -s " " |awk -F [°C+] ‘{print $0}’
Package id 0: +32.0°C (high = +83.0°C, crit = +93.0°C)
Core 0: +31.0°C (high = +83.0°C, crit = +93.0°C)
Core 1: +27.0°C (high = +83.0°C, crit = +93.0°C)
Core 2: +27.0°C (high = +83.0°C, crit = +93.0°C)
Core 3: +29.0°C (high = +83.0°C, crit = +93.0°C)
Core 4: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 5: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 8: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 9: +27.0°C (high = +83.0°C, crit = +93.0°C)
Core 10: +27.0°C (high = +83.0°C, crit = +93.0°C)
Core 11: +28.0°C (high = +83.0°C, crit = +93.0°C)
Core 12: +30.0°C (high = +83.0°C, crit = +93.0°C)
Core 13: +28.0°C (high = +83.0°C, crit = +93.0°C)
這條指令中awk -F [°C+] '{print $0}'表示按照°C+為指定分割符并輸出每一行內容
[root@dana ~]# sensors coretemp-isa-0000 | tail -n +3 |tr -s " " |awk -F [°C+] ‘{print $1}’
Package id 0:
這條指令中{print $1}表示只輸出每一行第1個欄位內容
[root@dana ~]# sensors coretemp-isa-0000 | tail -n +3 |tr -s " " |awk -F [°C+] ‘{print $3}’
32.0
28.0
28.0
31.0
29.0
29.0
29.0
29.0
28.0
29.0
31.0
28.0
這條指令中{print $3}表示只輸出每一行第3個欄位內容
[root@dana ~]# sensors coretemp-isa-0000 | tail -n +3 |tr -s " " |awk -F [°C+] ‘{print $6}’
83.0
83.0
83.0
83.0
83.0
83.0
83.0
83.0
83.0
83.0
83.0
83.0
這條指令中{print $6}表示只輸出每一行第6個欄位內容
[root@dana ~]# sensors coretemp-isa-0000 | tail -n +3 |tr -s " " |awk -F [°C+] ‘{print $9}’
93.0
93.0
93.0
93.0
93.0
93.0
93.0
93.0
93.0
93.0
93.0
93.0
這條指令中{print $9}表示只輸出每一行第9個欄位內容
3 終極代碼實作(放大招)
#!/bin/bash
# 功能:查看主板上單個多核CPU中溫度最高的一個內核
# 腳本依賴:lm_sensors工具,可以執行下面陳述句進行安裝,如果安裝不了請更換YUM源
# 工具安裝命令:yum install -y lm_sensors
# 注意事項:
# 1.“sensors coretemp-isa-0000”中后面的引數視主機實際的引數而定
# 2.目前vmware虛擬機中lm_sensors工具無法查看硬體溫度
date=`date "+%Y-%m-%d %H:%M:%S"`
echo $date
CPU0=`sensors coretemp-isa-0000 | tail -n +3 |tr -s " " |awk -F [°C+] '{print $3}'`
CPU1=`sensors coretemp-isa-0001 | tail -n +3 |tr -s " " |awk -F [°C+] '{print $3}'`
echo $CPU0
echo $CPU1
highCPU0=`sensors coretemp-isa-0000 | tail -n +3 |tr -s " " |awk -F [°C+] '{print $1$6}'`
highCPU1=`sensors coretemp-isa-0001 | tail -n +3 |tr -s " " |awk -F [°C+] '{print $1$6}'`
for i in $CPU0;
do
echo $i
#echo $i|awk '{printf("%d\n",$0);}'
#if [ $i -lt 83 ];then
if [ `echo "$i > 83.0"` ] ; then
echo "$date 請注意!!!coretemp-isa-0000 cpu溫度為$i度,請及時排查">>/var/log/cpu_message
elif [ `echo "$i > 93.0"` ] ; then
echo "請注意!!!!!!coretemp-isa-0000 cpu超過此溫度就會啥訓,請及時排查">>/var/log/cpu_message
else
echo "cpu運行一切正常"
fi
done
for j in $CPU1;
do
echo $i
#echo $i|awk '{printf("%d\n",$0);}'
#if [ $i -lt 83 ];then
if [ `echo "$j > 83.0"` ] ; then
echo "$date 請注意!!!coretemp-isa-0001 cpu溫度為$i度,請及時排查">>/var/log/cpu_message
elif [ `echo "$j > 93.0"` ] ; then
echo "$date 請注意!!!!!!coretemp-isa-0001 cpu超過此溫度就會啥訓,請及時排查">>/var/log/cpu_message
else
echo "cpu運行一切正常"
fi
done
最終運行結果

本篇文章所有代碼,我都親測無誤,如果本篇博客對您有所幫助,請三連點贊,關注,收藏支持下,有需要溝通交流的,可隨時溝通交流,多謝大家支持!!!



轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297297.html
標籤:其他
