获取服务器指标的信息

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%"
相关推荐
桑榆4164 小时前
双系统(Windows + Ubuntu)安装流程
linux·windows·ubuntu
jerryinwuhan8 小时前
《系统部署与运维》开篇 课程介绍
运维
ltl10 小时前
实时 OS 巡礼:VxWorks、QNX、Zephyr 与 PREEMPT_RT
linux
我是谁??10 小时前
Ubuntu22.04更换清华源
linux·运维·服务器
圣殿骑士-Khtangc11 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
Shell运维手记11 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
朴马丁11 小时前
国际与国产PLM在精细化工赛道的布局:2026年主要厂商技术特色
大数据·运维·人工智能·流程行业plm·化工新材料
这个DBA有点耶12 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构
Elastic 中国社区官方博客12 小时前
Elasticsearch:使用 AI Agent 来创建 workflow
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·全文检索
测试运维日常笔记13 小时前
Linux系统安装配置TigerVNC服务器完整指南
linux·运维·服务器