使用一個(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