獲取linux 服務器內存/cpu/IO等使用情況腳本
#!/bin/bash # 獲取要監控的本地服務器IP地址 IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'` echo "IP地址:"$IP # 獲取cpu總核數 cpu_num=`grep -c "model name" /proc/cpuinfo` echo "cpu總核數:"$cpu_num # 1、獲取CPU利用率 ################################################ #us 用戶空間占用CPU百分比 #sy 內核空間占用CPU百分比 #ni 用戶進程空間內改變過優先級的進程占用CPU百分比 #id 空閑CPU百分比 #wa 等待輸入輸出的CPU時間百分比 #hi 硬件中斷 #si 軟件中斷 ################################################# # 獲取用戶空間占用CPU百分比 cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"` echo "用戶空間占用CPU百分比:"$cpu_user # 獲取內核空間占用CPU百分比 cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"` echo "內核空間占用CPU百分比:"$cpu_system # 獲取空閑CPU百分比 cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"` echo "空閑CPU百分比:"$cpu_idle # 獲取等待輸入輸出占CPU百分比 cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"` echo "等待輸入輸出占CPU百分比:"$cpu_iowait #2、獲取CPU上下文切換和中斷次數 # 獲取CPU中斷次數 cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'` echo "CPU中斷次數:"$cpu_interrupt # 獲取CPU上下文切換次數 cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'` echo "CPU上下文切換次數:"$cpu_context_switch #3、獲取CPU負載信息 # 獲取CPU15分鍾前到現在的負載平均值 cpu_load_15min=`uptime | awk '{print $11}' | cut -f 1 -d ','` echo "CPU 15分鍾前到現在的負載平均值:"$cpu_load_15min # 獲取CPU5分鍾前到現在的負載平均值 cpu_load_5min=`uptime | awk '{print $10}' | cut -f 1 -d ','` echo "CPU 5分鍾前到現在的負載平均值:"$cpu_load_5min # 獲取CPU1分鍾前到現在的負載平均值 cpu_load_1min=`uptime | awk '{print $9}' | cut -f 1 -d ','` echo "CPU 1分鍾前到現在的負載平均值:"$cpu_load_1min # 獲取任務隊列(就緒狀態等待的進程數) cpu_task_length=`vmstat -n 1 1 | sed -n 3p | awk '{print $1}'` echo "CPU任務隊列長度:"$cpu_task_length #4、獲取內存信息 # 獲取物理內存總量 mem_total=`free | grep Mem | awk '{print $2}'` echo "物理內存總量:"$mem_total # 獲取操作系統已使用內存總量 mem_sys_used=`free | grep Mem | awk '{print $3}'` echo "已使用內存總量(操作系統):"$mem_sys_used # 獲取操作系統未使用內存總量 mem_sys_free=`free | grep Mem | awk '{print $4}'` echo "剩余內存總量(操作系統):"$mem_sys_free # 獲取應用程序已使用的內存總量 mem_user_used=`free | sed -n 3p | awk '{print $3}'` echo "已使用內存總量(應用程序):"$mem_user_used # 獲取應用程序未使用內存總量 mem_user_free=`free | sed -n 3p | awk '{print $4}'` echo "剩余內存總量(應用程序):"$mem_user_free # 獲取交換分區總大小 mem_swap_total=`free | grep Swap | awk '{print $2}'` echo "交換分區總大小:"$mem_swap_total # 獲取已使用交換分區大小 mem_swap_used=`free | grep Swap | awk '{print $3}'` echo "已使用交換分區大小:"$mem_swap_used # 獲取剩余交換分區大小 mem_swap_free=`free | grep Swap | awk '{print $4}'` echo "剩余交換分區大小:"$mem_swap_free #5、獲取磁盤I/O統計信息 echo "指定設備(/dev/sda)的統計信息" # 每秒向設備發起的讀請求次數 disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'` echo "每秒向設備發起的讀請求次數:"$disk_sda_rs # 每秒向設備發起的寫請求次數 disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'` echo "每秒向設備發起的寫請求次數:"$disk_sda_ws # 向設備發起的I/O請求隊列長度平均值 disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'` echo "向設備發起的I/O請求隊列長度平均值"$disk_sda_avgqu_sz # 每次向設備發起的I/O請求平均時間 disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'` echo "每次向設備發起的I/O請求平均時間:"$disk_sda_await # 向設備發起的I/O服務時間均值 disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'` echo "向設備發起的I/O服務時間均值:"$disk_sda_svctm # 向設備發起I/O請求的CPU時間百分占比 disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'` echo "向設備發起I/O請求的CPU時間百分占比:"$disk_sda_util 執行