1. 程式人生 > 其它 >shell 主機資訊監控

shell 主機資訊監控

#!/bin/bash
#date: 2020.04.02
#description: show the rate of system resources
 
 
# cpu資源資訊統計
function show_cpu
{
    cpu_rate=$(vmstat | awk 'NR == 3 {print $(NF-4) + $(NF-3)"%"}')
    wait_io=$(vmstat | awk 'NR == 3 {print $(NF-1)"%"}')
    echo -e "CPU -> 佔用率:${cpu_rate}\t等待磁碟io:${wait_io}"
}
 
 
# 記憶體資源資訊統計
function show_memory
{
    memory_total=$(free -m | awk 'NR == 2 {printf "%.2f", $2/1024}')
    memory_used=$(free -m | awk 'NR == 2 {print $3}')
    memory_available=$(free -m | awk 'NR == 2 {print $NF}')
    echo -e "記憶體 -> 總數:${memory_total}G\t已用:${memory_used}M\t可用:${memory_available}M"
}
 
 
# 磁碟資源資訊統計
function show_disk
{
    df -h | awk '/^\/dev/ {printf "磁碟 -> 掛載點:%s\t總數:%s\t已用:%s\t可用:%s\t使用率:%s\n", $NF, $2, $3, $4, $5}'
}
 
 
# 網路資源資訊統計
function show_net
{
    netstat -atnp | awk 'BEGIN{printf "\n網路 -> \n%-16s%s\n", "狀態", "總數"} NR > 2 { STATUS[$6]++ } END{ for(i in STATUS) printf "%-16s%4s\n", i, STATUS[i] }'
}
 
 
# 實現選單顯示
function menu
{
    echo -e "\n\t\t歡迎使用系統資源監測系統\t\t"
    echo
    echo -e "\t\t\t0、退出系統\t\t\t"
    echo -e "\t\t\t1、CPU資源監測\t\t\t"
    echo -e "\t\t\t2、記憶體資源監測\t\t\t"
    echo -e "\t\t\t3、磁碟資源監測\t\t\t"
    echo -e "\t\t\t4、網路資源監測\t\t\t"
}
 
 
# 1.定義入口函式
function main
{
    # 2.判斷使用者輸入
    # while為無限迴圈
    while :
    do
        menu
        read -p "請輸入0~4之間的數字:" num
        # 3.根據使用者選擇的選項, 呼叫相應的函式
        case "${num}" in
            0)
                echo -e "歡迎再次光臨!"
                break
                ;;
            1)
                show_cpu
                ;;
            2)
                show_memory
                ;;
            3)
                show_disk
                ;;
            4)
                show_net
                ;;
            *)
                ;;
        esac
    done
     
}
 
main