快速檢查服務(wù)器狀態(tài)腳本

使用一個(gè)腳本快速檢查服務(wù)器當(dāng)前相關(guān)的狀態(tài)


#!/bin/bash

:<<!
    功能:Linux服務(wù)器資源檢查腳本蟹略。
            1钱贯、此腳本可檢查目標(biāo)服務(wù)器基礎(chǔ)信息、CPU信息也搓、內(nèi)存信息、磁盤信息叉钥、網(wǎng)絡(luò)信息香椎。
            2畴栖、此腳本僅適用于單機(jī)服務(wù)器找筝,未設(shè)計(jì)查看遠(yuǎn)程服務(wù)器信息功能蹈垢。
            3、此腳本適用于符合LSB標(biāo)準(zhǔn)的系統(tǒng)袖裕。
    版本:1.2
    作者:lidj
    郵件:dejinx@qq.com
    日期:2021-09-10
!

# 顏色函數(shù)
function color_schema() {
    #  色彩    黑  紅  綠  黃  藍(lán)  洋紅  青  白
    # 前景色   30  31  32  33  34   35   36  37
    # 背景色   40  41  42  43  44   45   46  47
    #
    # 規(guī)則 \033[前景色;背景色m

    high_color="\033[1;31m"
    low_color="\033[1;34m"
    medium_color="\033[1;35m"
    default_color="\033[0m"
}

# 服務(wù)器基礎(chǔ)信息檢查函數(shù)
function server_basics_message() {
    echo -e -n "--------------------------------基礎(chǔ)信息--------------------------------\n"

    local os_name=`grep "PRETTY_NAME" /etc/os-release | cut -d= -f2 | cut -d\" -f2`
    local kernel_release=`uname -r`
    local os_hostname=`hostname`
    local now_time=`date +%Y-%m-%d\ %H:%M:%S`
    local sys_lang=`echo $LANG`

    echo -e "  系    統(tǒng):\t${os_name}"
    echo -e "  內(nèi)    核:\t${kernel_release}"
    echo -e "  主 機(jī) 名:\t${os_hostname}"
    echo -e "  系統(tǒng)語(yǔ)系: \t${sys_lang}"
    echo -e "  當(dāng)前時(shí)間:\t${now_time}"
}

# CPU基礎(chǔ)信息檢查函數(shù)
function cpu_message() {
    color_schema

    echo -e -n "--------------------------------CPU 信息--------------------------------\n"

    local physical_id=`grep "physical id" /proc/cpuinfo | sort | uniq | wc -l`
    local cpu_cores=`grep "cpu cores" /proc/cpuinfo | uniq | awk '{print $4}'`
    local siblings=`grep "siblings" /proc/cpuinfo | uniq | awk '{print $3}'`
    local processor=`grep "processor" /proc/cpuinfo | wc -l`

    local cpu_availing=`top -n1 -b | grep "%Cpu(s)" | cut -d, -f4 | cut -c 1-5 | sed -e 's/^[ ]*//g' | sed -e 's/[ ]*$//g'`
    local cpu_using=`awk 'BEGIN{printf "%0.2f%%",100-'${cpu_availing}'}'`

    local cpu_using_tmp=`awk 'BEGIN{printf "%0.2f",100-'${cpu_availing}'}'`

    if [ ${cpu_cores} -eq ${siblings} ]; then
        local is_use_hyper_threading="否"
    else
        local is_use_hyper_threading="是"
    fi

    echo -e "  物理CPU總數(shù):        \t${physical_id}"
    echo -e "  邏輯CPU總數(shù):        \t${processor}"
    echo -e "  每顆物理CPU的核心數(shù):\t${cpu_cores}"
    echo -e "  是否使用超線程技術(shù): \t${is_use_hyper_threading}"

    if [ $(echo "${cpu_using_tmp} < "33.33" " | bc) = "1" ]; then
        echo -e "  CPU使用率:          \t${low_color}${cpu_using}${default_color}"
    elif [ $(echo "${cpu_using_tmp} > "66.66" " | bc) = "1" ]; then
        echo -e "  CPU使用率:          \t${high_color}${cpu_using}${default_color}"
    else
        echo -e "  CPU使用率:          \t${medium_color}${cpu_using}${default_color}"
    fi
}

# 內(nèi)存基本信息檢查函數(shù)
function mem_message() {
    color_schema

    echo -e -n "--------------------------------內(nèi)存信息--------------------------------\n"

    local mem_total_tmp=`free | grep "Mem" | awk '{print $2}'`
    local mem_used_tmp=`free | grep "Mem" | awk '{print $3}'`
    local mem_free_tmp=`free | grep "Mem" | awk '{print $4}'`

    local mem_total=`awk 'BEGIN{printf "%0.2f",'${mem_total_tmp}'/1024/1024}'`
    local mem_used=`awk 'BEGIN{printf "%0.2f",'${mem_used_tmp}'/1024/1024}'`
    local mem_avail=`awk 'BEGIN{printf "%0.2f",'${mem_total}'-'${mem_used}'}'`
    local mem_free=`awk 'BEGIN{printf "%0.2f",'${mem_free_tmp}'/1024/1024}'`

    local mem_using=`awk 'BEGIN{printf "%0.2f%%",'${mem_used}'/'${mem_total}'*100}'`

    local mem_using_tmp=`awk 'BEGIN{printf "%0.2f",'${mem_used}'/'${mem_total}'*100}'`

    local swap_total_tmp=`free | grep "Swap" | awk '{print $2}'`
    local swap_total=`awk 'BEGIN{printf "%0.2f",'${swap_total_tmp}'/1024/1024}'`

    local is_exist_swap="Unknow"

    if [ ${swap_total} = "0.00" ]; then
        local is_exist_swap="No"
    else
        local swap_used_tmp=`free | grep "Swap" | awk '{print $3}'`
        local swap_free_tmp=`free | grep "Swap" | awk '{print $4}'`

        local swap_used=`awk 'BEGIN{printf "%0.2f",'${swap_used_tmp}'/1024/1024}'`
        local swap_avail=`awk 'BEGIN{printf "%0.2f",'${swap_total}'-'${swap_used}'}'`
        local swap_free=`awk 'BEGIN{printf "%0.2f",'${swap_free_tmp}'/1024/1024}'`

        local swap_using=`awk 'BEGIN{printf "%0.2f%%",'${swap_used}'/'${swap_total}'*100}'`

        local swap_using_tmp=`awk 'BEGIN{printf "%0.2f",'${swap_used}'/'${swap_total}'*100}'`
    fi

    echo -e "  物理內(nèi)存:"
    echo -e "\t總量:\t${mem_total}G"
    echo -e "\t使用:\t${mem_used}G"
    echo -e "\t剩余:\t${mem_avail}G"
    echo -e "\tFree態(tài):${mem_free}G"

    if [ $(echo "${mem_using_tmp} < "33.33" " | bc ) = "1" ]; then
        echo -e "\t使用率:${low_color}${mem_using}${default_color}"
    elif [ $(echo "${mem_using_tmp} > "66.66" " | bc ) = "1" ]; then
        echo -e "\t使用率:${high_color}${mem_using}${default_color}"
    else
        echo -e "\t使用率:${medium_color}${mem_using}${default_color}"
    fi

    if [ ${is_exist_swap} = "No" ]; then
        echo -e "  該服務(wù)器無(wú)交換分區(qū)曹抬!"
    else
        echo -e "  交換分區(qū):"
        echo -e "\t總量:\t${swap_total}G"
        echo -e "\t使用:\t${swap_used}G"
        echo -e "\t剩余:\t${swap_avail}G"
        echo -e "\tFree態(tài):${swap_free}G"

        if [ $(echo "${swap_using_tmp} < "33.33" " | bc) = "1" ]; then
            echo -e "\t使用率:${low_color}${swap_using}${default_color}"
        elif [ $(echo "${swap_using_tmp} > "66.66" " | bc ) = "1" ]; then
            echo -e "\t使用率:${high_color}${swap_using}${default_color}"
        else
            echo -e "\t使用率:${medium_color}${swap_using}${default_color}"
        fi
    fi
}

# 磁盤基本信息檢查函數(shù)
function disk_message() {
    color_schema

    echo -e -n "--------------------------------磁盤信息--------------------------------\n"

    local disk_dev_list=`fdisk -l | grep " /dev" | awk '{print $2}' | sed 's/:/ /g' | sed 's/:/ /g' | awk '{print $1}'`

    for disk_dev in ${disk_dev_list}; do
        local partition_list=`df | grep "${disk_dev}" | awk '{print $1}'`
        local partition_sum=`df | grep "${disk_dev}" | awk '{print $1}' | wc -l`

        local disk_dev_size=`fdisk -l | grep " ${disk_dev}" | sed 's/:/ /g' | sed 's/:/ /g' | sed 's/,/ /g' | sed 's/,/ /g' | awk '{print $3,$4}'`

        echo -e "  磁盤名稱:\t${disk_dev}\t\t磁盤大新礁场:${disk_dev_size}"

        if [ ${partition_sum} = "0" ]; then
            echo -e "    未找到磁盤設(shè)備${disk_dev}的掛載點(diǎn)沐祷!"
        else
            for partition in ${partition_list}; do
                local mount_point=`df | grep "${partition}" | awk '{print $6}'`
                local mount_size_sum=`df | grep "${partition}" | awk '{printf "%0.2f", $2/1024/1024}'`
                local mount_size_used=`df | grep "${partition}" | awk '{printf "%0.2f", $3/1024/1024}'`
                local mount_size_avail=`df | grep "${partition}" | awk '{printf "%0.2f", $4/1024/1024}'`
                local mount_size_using=`awk 'BEGIN{printf "%0.2f%%",'${mount_size_used}'/'${mount_size_sum}'*100}'`

                local mount_size_using_tmp=`awk 'BEGIN{printf "%0.2f",'${mount_size_used}'/'${mount_size_sum}'*100}'`

                echo -e "    掛載點(diǎn):\t${mount_point}"
                echo -e "\t總量:\t${mount_size_sum}G"
                echo -e "\t使用:\t${mount_size_used}G"
                echo -e "\t剩余:\t${mount_size_avail}G"

                if [ $(echo "${mount_size_using_tmp} < "33.33" " | bc) = "1" ]; then
                    echo -e "\t使用率:${low_color}${mount_size_using}${default_color}"
                elif [ $(echo "${mount_size_using_tmp} > "66.66" " | bc) = "1" ]; then
                    echo -e "\t使用率:${high_color}${mount_size_using}${default_color}"
                else
                    echo -e "\t使用率:${medium_color}${mount_size_using}${default_color}"
                fi
            done
        fi
    done
}

# 網(wǎng)絡(luò)基本信息檢查函數(shù)
function network_message() {
    echo -e -n "------------------------------物理網(wǎng)卡信息------------------------------\n"

    local physical_network_card_list=`ls /sys/class/net/ | grep -v "\`ls /sys/devices/virtual/net/\`"`

    for physical_network_card in ${physical_network_card_list}; do
        local ipaddress_and_prefix=`ip addr | grep -A10 "${physical_network_card}" | awk '/inet/' | awk 'NR==1{print}' | awk '{print $2}'`
        local gateway=`ip addr | grep -A10 "${physical_network_card}" | awk '/inet/' | awk 'NR==1{print}' | awk '{print $4}'`

        if [ -z ${ipaddress_and_prefix} ]; then
            local ipaddress_and_prefix="未查詢到${physical_network_card}網(wǎng)卡的IP地址!"
        fi
        if [ -z ${gateway} ]; then
            local gateway="未查詢到${physical_network_card}網(wǎng)卡的網(wǎng)關(guān)地址攒岛!"
        fi

        echo -e "  網(wǎng)卡名稱:\t${physical_network_card}"
        echo -e "    I P 地址:\t${ipaddress_and_prefix}"
        echo -e "    網(wǎng)關(guān)地址:\t${gateway}"
    done
    echo -e -n "\n"
}

clear

# 主函數(shù)
function main() {
    server_basics_message
    cpu_message
    mem_message
    disk_message
    network_message
}

# 運(yùn)行
main

顯示效果如下圖所示:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赖临,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子灾锯,更是在濱河造成了極大的恐慌兢榨,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顺饮,死亡現(xiàn)場(chǎng)離奇詭異吵聪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)兼雄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門吟逝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人赦肋,你說(shuō)我怎么就攤上這事块攒。” “怎么了佃乘?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵囱井,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我趣避,道長(zhǎng)庞呕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任程帕,我火速辦了婚禮住练,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骆捧。我一直安慰自己澎羞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布敛苇。 她就那樣靜靜地躺著妆绞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枫攀。 梳的紋絲不亂的頭發(fā)上括饶,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音来涨,去河邊找鬼图焰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蹦掐,可吹牛的內(nèi)容都是我干的技羔。 我是一名探鬼主播僵闯,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼藤滥!你這毒婦竟也來(lái)了鳖粟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拙绊,失蹤者是張志新(化名)和其女友劉穎向图,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體标沪,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榄攀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了金句。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檩赢。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖趴梢,靈堂內(nèi)的尸體忽然破棺而出漠畜,到底是詐尸還是另有隱情,我是刑警寧澤坞靶,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布憔狞,位于F島的核電站,受9級(jí)特大地震影響彰阴,放射性物質(zhì)發(fā)生泄漏瘾敢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一尿这、第九天 我趴在偏房一處隱蔽的房頂上張望簇抵。 院中可真熱鬧,春花似錦射众、人聲如沸碟摆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)典蜕。三九已至,卻和暖如春罗洗,著一層夾襖步出監(jiān)牢的瞬間愉舔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工伙菜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轩缤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像火的,于是被迫代替她去往敵國(guó)和親壶愤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你馏鹤,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料公你? 從這篇文章中你...
    hw1212閱讀 12,749評(píng)論 2 59
  • 一、MemCache簡(jiǎn)介 session MemCache是一個(gè)自由假瞬、源碼開放、高性能迂尝、分布式的分布式內(nèi)存對(duì)象緩存...
    李偉銘MIng閱讀 3,821評(píng)論 2 13
  • 簡(jiǎn)介網(wǎng)絡(luò)瀏覽器很可能是使用最廣的軟件脱茉。在這篇入門文章中,我將會(huì)介紹它們的幕后工作原理垄开。我們會(huì)了解到琴许,從您在地址欄輸...
    wengjq閱讀 2,034評(píng)論 2 15
  • 作為一名 web 開發(fā)者,學(xué)習(xí)瀏覽器的內(nèi)部工作原理將有助于您作出更明智的決策溉躲,并理解那些最佳開發(fā)實(shí)踐的原理榜田。 這篇...
    RoyLin1996閱讀 589評(píng)論 0 1
  • 快速搭建 LDAP 服務(wù)器與Hive集成 1 前言 LDAP (Lightweight Directory Acc...
    馮雪超閱讀 2,907評(píng)論 2 0