在服務器管理的過程中,了解服務器的各項性能指標是至關重要的。無論是CPU的負載情況,內存使用情況,還是硬盤的存儲空間以及TCP連接狀態,這些都是我們判斷服務器健康狀態和性能的重要依據。然而,手動一項項去檢查這些指標,既繁瑣又耗時。現在,有一個神奇的腳本可以幫你一鍵查看所有這些關鍵信息!
這個腳本包含了四個功能強大的函數,分別能查看CPU使用率、內存使用情況、硬盤空間以及TCP連接狀態。讓我們一起來詳細了解一下這個腳本的魔力所在吧!
1. CPU使用情況一目了然
通過cpu
函數,你能夠迅速獲取CPU的使用率和等待磁盤IO的相應使用率。這兩個指標對于評估服務器的運算能力和磁盤性能至關重要。
這段代碼通過vmstat
命令獲取CPU的使用數據,并經過awk
處理,最后輸出我們關心的使用率指標。
2. 內存使用情況盡在掌握
memory
函數則為你提供了服務器內存的總大小、已使用量和剩余量的詳細數據。通過這些信息,你可以輕松判斷服務器的內存是否充足,是否需要擴容。
該函數利用
free -m
命令來獲取內存的使用情況,并通過awk
進行數據處理,最終輸出清晰易懂的內存使用情況報告。
3. 硬盤空間了如指掌
通過disk
函數,你可以查看服務器上所有硬盤分區的掛載點、總大小、已使用空間和使用率。這對于監控磁盤空間的使用情況,預防磁盤滿載至關重要。
這個函數通過
df -h
命令獲取硬盤的使用數據,并結合awk
進行處理,為你提供詳細的硬盤空間報告。
4. TCP連接狀態清晰可見
最后,tcp_status
函數能夠展示當前服務器上所有的TCP連接狀態。這對于監控網絡連接、發現潛在的網絡問題非常有幫助。
此函數利用
ss -antp
命令來獲取TCP連接的狀態,并通過awk
進行統計,最終輸出各種狀態的TCP連接數量。
腳本:
#!/bin/bash
# 定義cpu函數,用于顯示CPU使用率和等待磁盤IO的相應使用率
function cpu(){
# 使用vmstat命令獲取CPU的用戶態和系統態使用率之和
util=$(vmstat | awk '{if(NR==3)print $13+$14}')
# 使用vmstat命令獲取CPU的等待磁盤IO的相應使用率
iowait=$(vmstat | awk '{if(NR==3)print $16}')
# 輸出CPU使用率和等待磁盤IO的相應使用率
echo "CPU -使用率:${util}% ,等待磁盤IO相應使用率:${iowait}%"
}
# 定義memory函數,用于顯示內存的總大小、已使用量和剩余量
function memory (){
# 使用free命令獲取總內存大小(單位轉換為G)
total=`free -m |awk '{if(NR==2)printf "%.1f",$2/1024}'`
# 使用free命令獲取已使用的內存大小(單位轉換為G)
used=`free -m |awk '{if(NR==2) printf "%.1f",($2-$NF)/1024}'`
# 使用free命令獲取剩余的內存大小(單位轉換為G)
available=`free -m |awk '{if(NR==2) printf "%.1f",$NF/1024}'`
# 輸出內存的總大小、已使用量和剩余量
echo "內存 - 總大小: ${total}G , 使用: ${used}G , 剩余: ${available}G"
}
# 定義disk函數,用于顯示硬盤的掛載點、總大小、已使用空間和使用率
disk(){
# 使用df命令獲取所有硬盤分區的設備名稱
fs=$(df -h |awk '/^\/dev/{print $1}')
# 遍歷每個硬盤分區
for p in $fs; do
# 使用df命令獲取分區的掛載點
mounted=$(df -h |awk '$1=="'$p'"{print $NF}')
# 使用df命令獲取分區的總大小
size=$(df -h |awk '$1=="'$p'"{print $2}')
# 使用df命令獲取分區已使用的空間
used=$(df -h |awk '$1=="'$p'"{print $3}')
# 使用df命令獲取分區的使用率
used_percent=$(df -h |awk '$1=="'$p'"{print $5}')
# 輸出分區的掛載點、總大小、已使用空間和使用率
echo "硬盤 - 掛載點: $mounted , 總大小: $size , 使用: $used , 使用率: $used_percent"
done
}
# 定義tcp_status函數,用于顯示TCP連接狀態
function tcp_status() {
# 使用ss命令獲取TCP連接狀態,并使用awk進行統計
summary=$(ss -antp |awk '{status[$1]++}END{for(i in status) printf i":"status[i]" "}')
# 輸出TCP連接狀態統計結果
echo "TCP連接狀態 - $summary"
}
# 調用各個函數,顯示相關信息
cpu
memory
disk
tcp_status
總結:
這個神奇的腳本將復雜的服務器性能監控變得簡單而直觀。只需一鍵運行,你就能獲取到服務器的各項關鍵性能指標,為你的服務器管理提供強大的數據支持。