获取服务器指标的信息

1. KB

shell 复制代码
#!/bin/bash
# 获取要监控的本地服务器IP地址
IP=$(ifconfig | grep -E 'inet (addr:)?' | grep -vE 'inet6|127.0.0.1|inet6' | awk '{print $2}' | cut -d: -f2 | head -n 1)
echo "IP地址:$IP"
# 获取cpu总核数
cpu_num=$(grep -c "model name" /proc/cpuinfo)
echo "cpu总核数:$cpu_num"
# 1、获取CPU利用率
cpu_user=$(top -b -n 1 | grep Cpu | awk '{print $2}' | cut -d'%' -f1)
echo "用户空间占用CPU百分比:$cpu_user"
cpu_system=$(top -b -n 1 | grep Cpu | awk '{print $4}' | cut -d'%' -f1)
echo "内核空间占用CPU百分比:$cpu_system"
cpu_idle=$(top -b -n 1 | grep Cpu | awk '{print $8}' | cut -d'%' -f1)
echo "空闲CPU百分比:$cpu_idle"
cpu_iowait=$(top -b -n 1 | grep Cpu | awk '{print $10}' | cut -d'%' -f1)
echo "等待输入输出占CPU百分比:$cpu_iowait"
# 2、获取CPU上下文切换和中断次数
cpu_interrupt=$(vmstat -n 1 1 | sed -n 3p | awk '{print $11}')
echo "CPU中断次数:$cpu_interrupt"
cpu_context_switch=$(vmstat -n 1 1 | sed -n 3p | awk '{print $12}')
echo "CPU上下文切换次数:$cpu_context_switch"
# 3、获取CPU负载信息
cpu_load_1min=$(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f1 | tr -d ' ')
echo "CPU 1分钟前到现在的负载平均值:$cpu_load_1min"
cpu_load_5min=$(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f2 | tr -d ' ')
echo "CPU 5分钟前到现在的负载平均值:$cpu_load_5min"
cpu_load_15min=$(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f3 | tr -d ' ')
echo "CPU 15分钟前到现在的负载平均值:$cpu_load_15min"
cpu_task_length=$(vmstat -n 1 1 | sed -n 3p | awk '{print $1}')
echo "CPU任务队列长度:$cpu_task_length"
# 4、获取内存信息
mem_total=$(free -b | grep -i mem | awk '{print $2}')
echo "物理内存总量:$mem_total"
mem_sys_used=$(free -b | grep -i mem | awk '{print $3}')
echo "已使用内存总量(操作系统):$mem_sys_used"
mem_sys_free=$(free -b | grep -i mem | awk '{print $4}')
echo "剩余内存总量(操作系统):$mem_sys_free"
# 5、获取 swap 分区使用情况
swap_total=$(free -b | grep -i swap | awk '{print $2}')
echo "swap分区总量:$swap_total"
swap_used=$(free -b | grep -i swap | awk '{print $3}')
echo "swap分区已使用量:$swap_used"
swap_free=$(free -b | grep -i swap | awk '{print $4}')
echo "swap分区空闲量:$swap_free"
# 6、获取磁盘I/O统计信息
echo "指定设备(/dev/sda)的统计信息"
disk_sda_rs=$(iostat -kx 1 1 | grep "sda " | awk '{print $4}')
echo "每秒向设备发起的读请求次数:$disk_sda_rs"
disk_sda_ws=$(iostat -kx 1 1 | grep "sda " | awk '{print $5}')
echo "每秒向设备发起的写请求次数:$disk_sda_ws"
disk_sda_avgqu_sz=$(iostat -kx 1 1 | grep "sda " | awk '{print $9}')
echo "向设备发起的I/O请求队列长度平均值:$disk_sda_avgqu_sz"
disk_sda_util=$(iostat -kx 1 1 | grep "sda " | awk '{print $10}')
echo "向设备发起I/O请求的CPU时间百分占比:$disk_sda_util"

2. MB

shell 复制代码
#!/bin/bash
# 获取要监控的本地服务器IP地址
IP=$(ifconfig | grep -E 'inet (addr:)?' | grep -vE 'inet6|127.0.0.1|inet6' | awk '{print $2}' | cut -d: -f2 | head -n 1)
echo "IP地址:$IP"
# 获取cpu总核数
cpu_num=$(grep -c "model name" /proc/cpuinfo)
echo "cpu总核数:$cpu_num"
# 1、获取CPU利用率
cpu_user=$(top -b -n 1 | grep Cpu | awk '{print $2}' | cut -d'%' -f1)
echo "用户空间占用CPU百分比:$cpu_user%"
cpu_system=$(top -b -n 1 | grep Cpu | awk '{print $4}' | cut -d'%' -f1)
echo "内核空间占用CPU百分比:$cpu_system%"
cpu_idle=$(top -b -n 1 | grep Cpu | awk '{print $8}' | cut -d'%' -f1)
echo "空闲CPU百分比:$cpu_idle%"
cpu_iowait=$(top -b -n 1 | grep Cpu | awk '{print $10}' | cut -d'%' -f1)
echo "等待输入输出占CPU百分比:$cpu_iowait%"
# 2、获取CPU上下文切换和中断次数
cpu_interrupt=$(vmstat -n 1 1 | sed -n 3p | awk '{print $11}')
echo "CPU中断次数:$cpu_interrupt"
cpu_context_switch=$(vmstat -n 1 1 | sed -n 3p | awk '{print $12}')
echo "CPU上下文切换次数:$cpu_context_switch"
# 3、获取CPU负载信息
cpu_load_1min=$(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f1 | tr -d ' ')
echo "CPU 1分钟前到现在的负载平均值:$cpu_load_1min"
cpu_load_5min=$(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f2 | tr -d ' ')
echo "CPU 5分钟前到现在的负载平均值:$cpu_load_5min"
cpu_load_15min=$(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f3 | tr -d ' ')
echo "CPU 15分钟前到现在的负载平均值:$cpu_load_15min"
cpu_task_length=$(vmstat -n 1 1 | sed -n 3p | awk '{print $1}')
echo "CPU任务队列长度:$cpu_task_length"
# 4、获取内存信息(单位转换成兆)
mem_total=$(free -m | grep -i mem | awk '{print $2}')
echo "物理内存总量:$mem_total MB"
mem_sys_used=$(free -m | grep -i mem | awk '{print $3}')
echo "已使用内存总量(操作系统):$mem_sys_used MB"
mem_sys_free=$(free -m | grep -i mem | awk '{print $4}')
echo "剩余内存总量(操作系统):$mem_sys_free MB"
# 5、获取 swap 分区使用情况(单位转换成兆)
swap_total=$(free -m | grep -i swap | awk '{print $2}')
echo "swap分区总量:$swap_total MB"
swap_used=$(free -m | grep -i swap | awk '{print $3}')
echo "swap分区已使用量:$swap_used MB"
swap_free=$(free -m | grep -i swap | awk '{print $4}')
echo "swap分区空闲量:$swap_free MB"
# 6、获取磁盘I/O统计信息(单位转换成兆)
echo "指定设备(/dev/sda)的统计信息"
disk_sda_rs=$(iostat -dx 1 1 | grep "sda " | awk '{print $4}')
echo "每秒向设备发起的读请求次数:$disk_sda_rs"
disk_sda_ws=$(iostat -dx 1 1 | grep "sda " | awk '{print $5}')
echo "每秒向设备发起的写请求次数:$disk_sda_ws"
disk_sda_avgqu_sz=$(iostat -dx 1 1 | grep "sda " | awk '{print $9}')
echo "向设备发起的I/O请求队列长度平均值:$disk_sda_avgqu_sz"
disk_sda_util=$(iostat -dx 1 1 | grep "sda " | awk '{print $12}')
echo "向设备发起I/O请求的CPU时间百分占比:$disk_sda_util%"
相关推荐
mCell1 小时前
Docker 进阶教程
运维·docker·容器
mCell1 小时前
Docker 入门教程
运维·docker·操作系统
祈祷苍天赐我java之术2 小时前
Linux 进阶之性能调优,文件管理,网络安全
java·linux·运维
ajassi20003 小时前
开源 C++ QT Widget 开发(七)线程--多线程及通讯
linux·c++·qt·开源
孤雪心殇3 小时前
如何安全,高效,优雅的提升linux的glibc版本
linux·后端·golang·glibc
王火火(DDoS CC防护)3 小时前
服务器网络带宽不足要怎么处理?
运维·服务器
FreeBuf_3 小时前
Chrome高危零日漏洞PoC公开,已被用于野外攻击
linux·运维·服务器·安全·web安全
初学者_xuan5 小时前
Linux程序与进程和进程程序基础以及程序管理(零基础掌握版)
运维·计算机网络·网络安全·零基础·学习方法·linux程序管理
小白银子5 小时前
零基础从头教学Linux(Day 20)
linux·运维·服务器·php·国安工程师