?
🏡作者主頁:點擊!?
🛠?Shell編程專欄:點擊!
??創作時間:2024年6月20日16點30分
🀄?文章質量:95分
目錄
————前言————
1.本章目標
2.編寫腳本
1.獲取內存使用率
2.獲取根分區磁盤占用率
3.設置監控閾值
4.檢查CPU使用率
5.檢查內存使用率
6.檢查根分區磁盤使用率
7.測試
————前言————
在現代計算機系統中,確保系統資源的高效利用和及時響應異常情況至關重要。對于系統管理員和開發人員來說,監控CPU、內存和磁盤使用情況是日常維護的核心任務之一。Shell腳本作為一種強大而靈活的工具,能夠幫助我們自動化這些監控任務,實時獲取系統資源使用情況,并在資源使用超過設定閾值時及時發出警報。
1.本章目標
本篇文章將帶領您學習如何編寫一個簡單但功能強大的Shell腳本,用于監控系統的CPU、內存和根分區磁盤的使用情況。當某項資源的使用率超過預設的警戒值時,腳本將自動發送警報郵件通知相關人員。通過本次學習,您將掌握基礎的Shell編程技巧,并能將這些知識應用到實際的系統監控中去。準備好了嗎?讓我們開始探索Shell編程的世界吧!
題目
請編寫一個Shell腳本,用于監控系統的CPU、內存和根分區磁盤的使用情況。該腳本需要在資源使用超過設定的閾值時發送警報郵件。
2.編寫腳本
vim /sysmon.sh
加入一下內容
1.獲取內存使用率
使用 free
命令和 awk
命令計算當前的內存使用率,并將其存儲在變量 mem
中。
mem=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
解釋如下:
free
:顯示系統的內存使用情況。grep Mem
:從free
的輸出中篩選出包含內存信息的那一行。awk '{print $3/$2 * 100.0}'
:計算內存使用率,將已用內存除以總內存并乘以100,得到百分比。mem=$(...)
:將計算結果存儲在變量mem
中。
2.獲取根分區磁盤占用率
使用 df -h
命令和 awk
命令獲取根分區(/)的磁盤占用率,并將其存儲在變量 disk
中。
disk=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
解釋如下:
df -h /
:顯示根分區(/)的磁盤使用情況。awk 'NR==2 {print $5}'
:提取第二行的第五列數據,即根分區的使用率。sed 's/%//'
:去掉使用率百分比后的百分號。disk=$(...)
:將結果存儲在變量disk
中。
3.設置監控閾值
定義CPU、內存和磁盤使用率的閾值。分別為80%、90%和90%。
cpuce=80
ncce=90
cpce=90
解釋如下:
cpuce=80
:設置CPU使用率警戒線為80%。ncce=90
:設置內存使用率警戒線為90%。cpce=90
:設置根分區磁盤使用率警戒線為90%。
4.檢查CPU使用率
對比CPU使用率與設定的閾值,如果超過80%,則輸出警告信息并發送郵件通知。
if (( $(echo "$cpu >= $cpuce" | bc -l) )); thenecho "CPU占用率超過80% ($cpu%)"echo "CPU占用率超過80%" | mail -s "監控警報" monitor@bdqn.com
elseecho "CPU占用率 $cpu%"
fi
解釋如下:
if (( $(echo "$cpu >= $cpuce" | bc -l) ))
:使用bc
計算表達式,如果cpu
大于或等于cpuce
。echo "CPU占用率超過80% ($cpu%)"
:輸出警告信息。echo "CPU占用率超過80%" | mail -s "監控警報" monitor@bdqn.com
:發送警報郵件。else
和echo "CPU占用率 $cpu%"
:如果cpu
低于cpuce
,輸出當前CPU使用率。
5.檢查內存使用率
對比內存使用率與設定的閾值,如果超過90%,則輸出警告信息并發送郵件通知。
if (( $(echo "$mem >= $ncce" | bc -l) )); then
echo "內存使用率超過90% ($mem%)"
echo "內存使用率超過90%" | mail -s "監控警報" monitor@bdqn.com
else
echo "內存使用率 $mem%"
fi
解釋如下:
if (( $(echo "$mem >= $ncce" | bc -l) ))
:使用bc
計算表達式,如果mem
大于或等于ncce
。echo "內存使用率超過90% ($mem%)"
:輸出警告信息。echo "內存使用率超過90%" | mail -s "監控警報" monitor@bdqn.com
:發送警報郵件。else
和echo "內存使用率 $mem%"
:如果mem
低于ncce
,輸出當前內存使用率。
6.檢查根分區磁盤使用率
對比根分區磁盤使用率與設定的閾值,如果超過90%,則輸出警告信息并發送郵件通知。
if (( $(echo "$disk >= $cpce" | bc -l) )); then
echo "磁盤使用率超過90% ($disk%)"
echo "磁盤使用率超過90%" | mail -s "監控警報" monitor@bdqn.com
else
echo "磁盤使用率 $disk%"
fi
解釋如下:
if (( $(echo "$disk >= $cpce" | bc -l) ))
:使用bc
計算表達式,如果disk
大于或等于cpce
。echo "磁盤使用率超過90% ($disk%)"
:輸出警告信息。echo "磁盤使用率超過90%" | mail -s "監控警報" monitor@bdqn.com
:發送警報郵件。else
和echo "磁盤使用率 $disk%"
:如果disk
低于cpce
,輸出當前磁盤使用率。
7.測試
編寫完成之后執行測試
?"成功的路上沒有捷徑,只有不斷的努力與堅持。如果你和我一樣,堅信努力會帶來回報,請關注我,點個贊,一起迎接更加美好的明天!你的支持是我繼續前行的動力!"
"每一次創作都是一次學習的過程,文章中若有不足之處,還請大家多多包容。你的關注和點贊是對我最大的支持,也歡迎大家提出寶貴的意見和建議,讓我不斷進步。"
神秘泣男子