准备Linux脚本保存为check_server_usage.sh#!/bin/bash # 服务器利用率检查脚本单机版- 带IP输出 # 输出IP/CPU/内存/磁盘/负载利用率 低利用率判断 # -------------------------- 函数获取本机IP地址 ------------------------- get_ip_address() { # 获取所有非回环IP地址内网IP local ip_list$(hostname -I 2/dev/null) if [ -z $ip_list ]; then # 备用方法使用 ip 命令 ip_list$(ip route get 1 | awk {print $7; exit} 2/dev/null) fi if [ -z $ip_list ]; then # 最后备用使用 ifconfig ip_list$(ifconfig | grep -Eo inet (addr:)?([0-9]*\.){3}[0-9]* | grep -Eo ([0-9]*\.){3}[0-9]* | grep -v 127.0.0.1 | head -1 2/dev/null) fi echo ${ip_list:-未知} # 如果都获取不到显示未知 } # -------------------------- 函数获取CPU空闲率% ------------------------- get_cpu_idle() { # 使用 top 非交互模式获取 CPU 状态取1次快照 local cpu_line$(top -bn1 | grep Cpu(s)) local idle_str$(echo $cpu_line | awk {print $8} | cut -d% -f1) echo ${idle_str//,/} # 去除逗号 } # -------------------------- 函数获取内存使用率% ------------------------- get_mem_usage() { local mem_info$(free | awk /Mem:/) local total$(echo $mem_info | awk {print $2}) local used$(echo $mem_info | awk {print $3}) local usage_pct$(( (used * 100) / total )) echo $usage_pct } # -------------------------- 函数获取磁盘使用率%根分区 ------------------------- get_disk_usage() { local disk_info$(df -P / | awk NR2) local usage_str$(echo $disk_info | awk {print $5}) echo ${usage_str//%/} } # -------------------------- 函数获取负载平均值1分钟 ------------------------- get_load_avg() { local load_line$(uptime) local load_1min$(echo $load_line | awk -F load average: {print $2} | awk {print $1} | tr -d ,) echo $load_1min } # -------------------------- 主逻辑采集数据并输出 ------------------------- main() { echo echo 服务器利用率检查报告单机版 echo echo 检查时间$(date %Y-%m-%d %H:%M:%S) echo 主机名$(hostname) echo IP地址$(get_ip_address) # 新增显示IP地址 echo ---------------------------------------------- # 采集指标 local cpu_idle$(get_cpu_idle) local mem_usage$(get_mem_usage) local disk_usage$(get_disk_usage) local load_avg$(get_load_avg) local cpu_cores$(nproc) local load_threshold$(echo scale2; 0.5 * $cpu_cores | bc) # 输出原始数据 echo 【CPU】 echo 空闲率${cpu_idle}% 使用率$((100 - ${cpu_idle%.*}))% echo 核心数$cpu_cores 核 echo ---------------------------------------------- echo 【内存】 echo 使用率$mem_usage% 剩余$((100 - mem_usage))% echo ---------------------------------------------- echo 【磁盘】根分区 / echo 使用率$disk_usage% 剩余$((100 - disk_usage))% echo ---------------------------------------------- echo 【负载平均值】1分钟 echo 当前值$load_avg 阈值$load_threshold低于阈值表示负载低 echo ---------------------------------------------- # 判断是否低利用率 echo 【低利用率判断】 local low_utilfalse # CPU空闲率 70%使用率 30% if (( $(echo $cpu_idle 70 | bc -l) )); then echo ✅ CPU利用率低空闲率 ${cpu_idle}%使用率 30% low_utiltrue else echo ❌ CPU利用率不低空闲率 ${cpu_idle}%使用率 ≥30% fi # 内存使用率 30% if (( mem_usage 30 )); then echo ✅ 内存利用率低使用率 ${mem_usage}%30% low_utiltrue else echo ❌ 内存利用率不低使用率 ${mem_usage}%≥30% fi # 磁盘使用率 50% if (( disk_usage 50 )); then echo ✅ 磁盘利用率低使用率 ${disk_usage}%50% low_utiltrue else echo ❌ 磁盘利用率不低使用率 ${disk_usage}%≥50% fi # 负载当前值 阈值 if (( $(echo $load_avg $load_threshold | bc -l) )); then echo ✅ 负载低当前 $load_avg 阈值 $load_threshold low_utiltrue else echo ❌ 负载不低当前 $load_avg ≥ 阈值 $load_threshold fi # 总结 if $low_util; then echo -e \n 结论该服务器部分/全部指标利用率较低适合作为低负载节点。 else echo -e \n 结论该服务器利用率较高不适合作为低负载节点。 fi echo } # 执行主函数 main上传到Linux服务器到对应的目录,然后执行下面的脚本sed -i s/\r$// check_server_usage.sh chmode 777 check_server_usage.sh sh check_server_usage.sh执行之后效果
linux查看服务器利用率
准备Linux脚本保存为check_server_usage.sh#!/bin/bash # 服务器利用率检查脚本单机版- 带IP输出 # 输出IP/CPU/内存/磁盘/负载利用率 低利用率判断 # -------------------------- 函数获取本机IP地址 ------------------------- get_ip_address() { # 获取所有非回环IP地址内网IP local ip_list$(hostname -I 2/dev/null) if [ -z $ip_list ]; then # 备用方法使用 ip 命令 ip_list$(ip route get 1 | awk {print $7; exit} 2/dev/null) fi if [ -z $ip_list ]; then # 最后备用使用 ifconfig ip_list$(ifconfig | grep -Eo inet (addr:)?([0-9]*\.){3}[0-9]* | grep -Eo ([0-9]*\.){3}[0-9]* | grep -v 127.0.0.1 | head -1 2/dev/null) fi echo ${ip_list:-未知} # 如果都获取不到显示未知 } # -------------------------- 函数获取CPU空闲率% ------------------------- get_cpu_idle() { # 使用 top 非交互模式获取 CPU 状态取1次快照 local cpu_line$(top -bn1 | grep Cpu(s)) local idle_str$(echo $cpu_line | awk {print $8} | cut -d% -f1) echo ${idle_str//,/} # 去除逗号 } # -------------------------- 函数获取内存使用率% ------------------------- get_mem_usage() { local mem_info$(free | awk /Mem:/) local total$(echo $mem_info | awk {print $2}) local used$(echo $mem_info | awk {print $3}) local usage_pct$(( (used * 100) / total )) echo $usage_pct } # -------------------------- 函数获取磁盘使用率%根分区 ------------------------- get_disk_usage() { local disk_info$(df -P / | awk NR2) local usage_str$(echo $disk_info | awk {print $5}) echo ${usage_str//%/} } # -------------------------- 函数获取负载平均值1分钟 ------------------------- get_load_avg() { local load_line$(uptime) local load_1min$(echo $load_line | awk -F load average: {print $2} | awk {print $1} | tr -d ,) echo $load_1min } # -------------------------- 主逻辑采集数据并输出 ------------------------- main() { echo echo 服务器利用率检查报告单机版 echo echo 检查时间$(date %Y-%m-%d %H:%M:%S) echo 主机名$(hostname) echo IP地址$(get_ip_address) # 新增显示IP地址 echo ---------------------------------------------- # 采集指标 local cpu_idle$(get_cpu_idle) local mem_usage$(get_mem_usage) local disk_usage$(get_disk_usage) local load_avg$(get_load_avg) local cpu_cores$(nproc) local load_threshold$(echo scale2; 0.5 * $cpu_cores | bc) # 输出原始数据 echo 【CPU】 echo 空闲率${cpu_idle}% 使用率$((100 - ${cpu_idle%.*}))% echo 核心数$cpu_cores 核 echo ---------------------------------------------- echo 【内存】 echo 使用率$mem_usage% 剩余$((100 - mem_usage))% echo ---------------------------------------------- echo 【磁盘】根分区 / echo 使用率$disk_usage% 剩余$((100 - disk_usage))% echo ---------------------------------------------- echo 【负载平均值】1分钟 echo 当前值$load_avg 阈值$load_threshold低于阈值表示负载低 echo ---------------------------------------------- # 判断是否低利用率 echo 【低利用率判断】 local low_utilfalse # CPU空闲率 70%使用率 30% if (( $(echo $cpu_idle 70 | bc -l) )); then echo ✅ CPU利用率低空闲率 ${cpu_idle}%使用率 30% low_utiltrue else echo ❌ CPU利用率不低空闲率 ${cpu_idle}%使用率 ≥30% fi # 内存使用率 30% if (( mem_usage 30 )); then echo ✅ 内存利用率低使用率 ${mem_usage}%30% low_utiltrue else echo ❌ 内存利用率不低使用率 ${mem_usage}%≥30% fi # 磁盘使用率 50% if (( disk_usage 50 )); then echo ✅ 磁盘利用率低使用率 ${disk_usage}%50% low_utiltrue else echo ❌ 磁盘利用率不低使用率 ${disk_usage}%≥50% fi # 负载当前值 阈值 if (( $(echo $load_avg $load_threshold | bc -l) )); then echo ✅ 负载低当前 $load_avg 阈值 $load_threshold low_utiltrue else echo ❌ 负载不低当前 $load_avg ≥ 阈值 $load_threshold fi # 总结 if $low_util; then echo -e \n 结论该服务器部分/全部指标利用率较低适合作为低负载节点。 else echo -e \n 结论该服务器利用率较高不适合作为低负载节点。 fi echo } # 执行主函数 main上传到Linux服务器到对应的目录,然后执行下面的脚本sed -i s/\r$// check_server_usage.sh chmode 777 check_server_usage.sh sh check_server_usage.sh执行之后效果