linux 系统监控脚本
1.对CPU的监控函数
function GetCpu(){cpu_num=`grep -c "model name" /proc/cpuinfo`cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"`cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"`cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"`cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"`cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'`cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'`cpu_load_15min=`uptime | awk '{print $12}' | cut -f 1 -d ','`cpu_load_5min=`uptime | awk '{print $11}' | cut -f 1 -d ','`cpu_load_1min=`uptime | awk '{print $10}' | cut -f 1 -d ','`color "cpu总核数:" "$cpu_num"color "用户空间占用CPU百分比:" "$cpu_user"color "内核空间占用CPU百分比:" "$cpu_system"color "空闲CPU百分比:" "$cpu_idle"color "等待输入输出占CPU百分比:" "$cpu_iowait"color "CPU中断次数:" "$cpu_interrupt"color "CPU上下文切换次数:" "$cpu_context_switch"color "CPU 15分钟前到现在的负载平均值:" "$cpu_load_15min"color "CPU 5分钟前到现在的负载平均值:" "$cpu_load_5min"color "CPU 1分钟前到现在的负载平均值:" "$cpu_load_1min"
}
2.对内存的监控函数
function GetMem(){mem_total=`free | grep Mem | awk '{print $2}'`mem_sys_used=`free | grep Mem | awk '{print $3}'`mem_sys_free=`free | grep Mem | awk '{print $4}'`mem_user_used=`free | sed -n 3p | awk '{print $3}'`mem_user_free=`free | sed -n 3p | awk '{print $4}'`mem_swap_total=`free | grep Swap | awk '{print $2}'`mem_swap_used=`free | grep Swap | awk '{print $3}'`mem_swap_free=`free | grep Swap | awk '{print $4}'`color "物理内存总量:" "$mem_total"color "已使用内存总量(操作系统):" "$mem_sys_used"color "剩余内存总量(操作系统):" "$mem_sys_free"color "已使用内存总量(应用程序):" "$mem_user_used"color "剩余内存总量(应用程序):" "$mem_user_free"color "交换分区总大小:" "$mem_swap_total"color "已使用交换分区大小:" "$mem_swap_used"color "剩余交换分区大小:" "$mem_swap_free"
}
3.对磁盘IO的监控函数
function GetDiskIo(){disk=sdaread -p "请输入指定磁盘:(eg:sda)" input_diskif [ -z "$input_disk" ]; thenecho "用户未输入,使用默认值 $disk"input_disk="$disk" # 由于未赋值,这里相当于保持默认elseecho "用户输入的disk路径: $input_disk"fiecho "指定设备($input_disk)的统计信息"disk_sda_rs=`iostat -kx | grep $input_disk| awk '{print $4}'`disk_sda_ws=`iostat -kx | grep $input_disk| awk '{print $5}'`disk_sda_avgqu_sz=`iostat -kx | grep $input_disk| awk '{print $9}'`disk_sda_await=`iostat -kx | grep $input_disk| awk '{print $10}'`disk_sda_svctm=`iostat -kx | grep $input_disk| awk '{print $11}'`disk_sda_util=`iostat -kx | grep $input_disk| awk '{print $12}'`color "每秒向设备发起的读请求次数:" "$disk_sda_rs"color "每秒向设备发起的写请求次数:" "$disk_sda_ws"color "向设备发起的I/O请求队列长度平均值:" "$disk_sda_avgqu_sz"color "每次向设备发起的I/O请求平均时间:" "$disk_sda_await"color "向设备发起的I/O服务时间均值:" "$disk_sda_svctm"color "向设备发起I/O请求的CPU时间百分占比:" "$disk_sda_util"
}
4.对线程状态的监控函数
function GetPidstat(){#初始化变量Ptotal=0Rtotal=0Stotal=0Ttotal=0Dtotal=0Ztotal=0for pid in /proc/[1-9]*do#获取进程状态let Ptotal=Ptotal+1stat=$(cd $pid && cat stat| awk '{print $3}')case $stat inR)let Rtotal=Rtotal+1;;S)let Stotal=Stotal+1;;T)let Ttotal=Ttotal+1;;D)let Dtotal=Dtotal+1;;Z)let Ztotal=Ztotal+1;;esacdonecolor "当前进程总数为:" "$Ptotal"color "其中Running进程数为:" "$Rtotal"color "其中Sleeping进程数为:" "$Stotal"color "其中Stopped进程数为:" "$Ttotal"color "其中Disk sleep进程数为:" "$Dtotal"color "其中Zombies进程数为:" "$Ztotal"
}
5.对网卡流量的监控函数
function GetNet(){eth_name=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $2}'`rxpck_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $3}'`txpck_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $4}'`rxkB_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $5}'`txkB_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $6}'`rxcmp_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $7}'`txcmp_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $8}'`rxmcst_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $9}'`color "$eth_name每秒钟接收的数据包:" "$rxpck_num"color "$eth_name每秒钟发送的数据包:" "$txpck_num"color "$eth_name每秒钟接收的字节数:" "$rxkB_num"color "$eth_name每秒钟发送的字节数:" "$txkB_num"color "$eth_name每秒钟接收的压缩数据包:" "$rxcmp_num"color "$eth_name每秒钟发送的压缩数据包:" "$txcmp_num"color "$eth_name每秒钟接收的多播数据包:" "$rxmcst_num"
}
6.实现效果
#!/bin/bash
function color() {local a=$1local b=$2echo -e "\033[1;32m$a\033[0m \033[1;31m$b\033[0m"
}
function GetIp(){IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`echo "IP地址:"$IP
}
#检查CPU利用率
function GetCpu(){cpu_num=`grep -c "model name" /proc/cpuinfo`cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"`cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"`cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"`cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"`cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'`cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'`cpu_load_15min=`uptime | awk '{print $12}' | cut -f 1 -d ','`cpu_load_5min=`uptime | awk '{print $11}' | cut -f 1 -d ','`cpu_load_1min=`uptime | awk '{print $10}' | cut -f 1 -d ','`color "cpu总核数:" "$cpu_num"color "用户空间占用CPU百分比:" "$cpu_user"color "内核空间占用CPU百分比:" "$cpu_system"color "空闲CPU百分比:" "$cpu_idle"color "等待输入输出占CPU百分比:" "$cpu_iowait"color "CPU中断次数:" "$cpu_interrupt"color "CPU上下文切换次数:" "$cpu_context_switch"color "CPU 15分钟前到现在的负载平均值:" "$cpu_load_15min"color "CPU 5分钟前到现在的负载平均值:" "$cpu_load_5min"color "CPU 1分钟前到现在的负载平均值:" "$cpu_load_1min"
}
#检查内存使用率
function GetMem(){mem_total=`free | grep Mem | awk '{print $2}'`mem_sys_used=`free | grep Mem | awk '{print $3}'`mem_sys_free=`free | grep Mem | awk '{print $4}'`mem_user_used=`free | sed -n 3p | awk '{print $3}'`mem_user_free=`free | sed -n 3p | awk '{print $4}'`mem_swap_total=`free | grep Swap | awk '{print $2}'`mem_swap_used=`free | grep Swap | awk '{print $3}'`mem_swap_free=`free | grep Swap | awk '{print $4}'`color "物理内存总量:" "$mem_total"color "已使用内存总量(操作系统):" "$mem_sys_used"color "剩余内存总量(操作系统):" "$mem_sys_free"color "已使用内存总量(应用程序):" "$mem_user_used"color "剩余内存总量(应用程序):" "$mem_user_free"color "交换分区总大小:" "$mem_swap_total"color "已使用交换分区大小:" "$mem_swap_used"color "剩余交换分区大小:" "$mem_swap_free"
}#检查磁盘IO状态
function GetDiskIo(){disk=sdaread -p "请输入指定磁盘:(eg:sda)" input_diskif [ -z "$input_disk" ]; thenecho "用户未输入,使用默认值 $disk"input_disk="$disk" # 由于未赋值,这里相当于保持默认elseecho "用户输入的disk路径: $input_disk"fiecho "指定设备($input_disk)的统计信息"disk_sda_rs=`iostat -kx | grep $input_disk| awk '{print $4}'`disk_sda_ws=`iostat -kx | grep $input_disk| awk '{print $5}'`disk_sda_avgqu_sz=`iostat -kx | grep $input_disk| awk '{print $9}'`disk_sda_await=`iostat -kx | grep $input_disk| awk '{print $10}'`disk_sda_svctm=`iostat -kx | grep $input_disk| awk '{print $11}'`disk_sda_util=`iostat -kx | grep $input_disk| awk '{print $12}'`color "每秒向设备发起的读请求次数:" "$disk_sda_rs"color "每秒向设备发起的写请求次数:" "$disk_sda_ws"color "向设备发起的I/O请求队列长度平均值:" "$disk_sda_avgqu_sz"color "每次向设备发起的I/O请求平均时间:" "$disk_sda_await"color "向设备发起的I/O服务时间均值:" "$disk_sda_svctm"color "向设备发起I/O请求的CPU时间百分占比:" "$disk_sda_util"
}
function GetPidstat(){#初始化变量Ptotal=0Rtotal=0Stotal=0Ttotal=0Dtotal=0Ztotal=0for pid in /proc/[1-9]*do#获取进程状态let Ptotal=Ptotal+1stat=$(cd $pid && cat stat| awk '{print $3}')case $stat inR)let Rtotal=Rtotal+1;;S)let Stotal=Stotal+1;;T)let Ttotal=Ttotal+1;;D)let Dtotal=Dtotal+1;;Z)let Ztotal=Ztotal+1;;esacdonecolor "当前进程总数为:" "$Ptotal"color "其中Running进程数为:" "$Rtotal"color "其中Sleeping进程数为:" "$Stotal"color "其中Stopped进程数为:" "$Ttotal"color "其中Disk sleep进程数为:" "$Dtotal"color "其中Zombies进程数为:" "$Ztotal"
}
function GetNet(){eth_name=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $2}'`rxpck_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $3}'`txpck_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $4}'`rxkB_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $5}'`txkB_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $6}'`rxcmp_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $7}'`txcmp_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $8}'`rxmcst_num=`sar -n DEV 1 1|grep ens|awk 'NR==2{print $9}'`color "$eth_name每秒钟接收的数据包:" "$rxpck_num"color "$eth_name每秒钟发送的数据包:" "$txpck_num"color "$eth_name每秒钟接收的字节数:" "$rxkB_num"color "$eth_name每秒钟发送的字节数:" "$txkB_num"color "$eth_name每秒钟接收的压缩数据包:" "$rxcmp_num"color "$eth_name每秒钟发送的压缩数据包:" "$txcmp_num"color "$eth_name每秒钟接收的多播数据包:" "$rxmcst_num"
}
echo "---------------------开始检查CPU----------------------"
GetCpu
echo "---------------------开始检查内存---------------------"
GetMem
echo "---------------------开始检查磁盘IO-------------------"
GetDiskIo
echo "---------------------开始检查进程状态-----------------"
GetPidstat
echo "---------------------开始检查网卡流量-----------------"
GetNet

相关文章:
linux 系统监控脚本
1.对CPU的监控函数 function GetCpu(){cpu_numgrep -c "model name" /proc/cpuinfocpu_usertop -b -n 1 | grep Cpu | awk {print $2} | cut -f 1 -d "%"cpu_systemtop -b -n 1 | grep Cpu | awk {print $4} | cut -f 1 -d "%"cpu_idletop -b -…...
K8s Pod的QoS类
文章目录 OverviewPod的QoS分类Guaranteed1.如何将 Pod 设置为保证Guaranteed2. Kubernetes 调度器如何管理Guaranteed类的Pod Burstable1. 如何将 Pod 设置为Burstable2.b. Kubernetes 调度程序如何管理 Burstable Pod BestEffort1. 如何将 Pod 设置为 BestEffort2. Kubernete…...
TCP/IP协议栈
一、TCP/IP协议栈和OSI参考模型对比 二、TCP/IP五层功能 三、TCP/IP模型的层间通信与数据封装 四、TCP/IP模型的层间通信与数据解封装...
Vector容器详解
Vector容器详解 本文将详细介绍C#中的Vector容器,包括其定义、特点、使用方法以及示例代码。 目录 Vector容器简介Vector容器的特点Vector容器的使用方法示例代码 1. Vector容器简介 Vector容器是一种动态数组,它可以自动调整大小以容纳更多的元素。…...
设计模式-抽象工厂(创建型)
创建型-抽象工厂 角色 抽象工厂: 声明创建一个族产品对象的方法,每个方法对应一中产品,抽象工厂可以是接口,也可以是抽象类;具体工厂: 实现抽象工厂接口,复杂创建具体的一族产品;抽…...
攻防世界---web---Web_php_unserialize
1、题目描述 2、 3、分析代码 class Demo { private $file fl4g.php; }:定义了一个名为Demo的类,该类有一个私有属性$file,默认值为fl4g.php。 $a serialize(new Demo);:创建了一个Demo类的实例,并对其进行序列化&a…...
嵌入式学习记录
一 环境搭建 1.Ubuntu ssh登陆开发板,短命令替换ssh命令 交叉编译命令 sudo gedit ~/.bashrc # 文件结尾加入: alias tob"ssh root192.168.1.104" alias gb"arm-buildroot-linux-gnueabihf-gcc"往后终端输入top 相当于输入ssh roo…...
使用from…import语句导入模块
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在使用import语句导入模块时,每执行一条import语句都会创建一个新的命名空间(namespace),并且在该命名…...
idea mac快捷键
Mac快捷键 快捷键 说明 ⌘ F 在当前窗口查找 ⌘ ⇧ F 在全工程查找 ⌘ ⇧ ⌥ N 查找类中的方法或变量 F3 / ⇧ F3 移动到搜索结果的下/上一匹配处 ⌘ R 在当前窗口替换 ⌘ ⇧ R 在全工程替换 ⌘ ⇧ V 可以将最近使用的剪贴板内容选择插入到文本 ⌥…...
Day1——一些感想,学习计划和自我激励(不重要,跳过吧)
笨人刚刚接触计算机的时候,属于是两眼一抹黑。高考后玩了一整个暑假,脑子已经丢掉了,学起来很痛苦,但是也在学习过程中接触到了很多新鲜的东西,现在对于计算机的各种方向,我都很想试试(试试就逝…...
网络安全渗透工具汇总
一、HackBar github地址:https://github.com/Mr-xn/hackbar2.1.3.git 介绍 HackBar是一款基于浏览器的渗透测试工具,可以简化目标网站的攻击流程。它可以轻松地注入JavaScript和其他脚本,进行SQL注入、XSS攻击、各种类型的扫描等。该工具…...
JavaScript 学习笔记 总结
回顾: Web页面标准 页面结构:HTML4、HTML5页面外观和布局:CSS页面行为:JavaScript强调三者的分离前后端分离开发模式 响应式设计Bootstrap框架入门 Bootstrap总结 基础 下载和使用基础样式:文本样式、图片样式、表格…...
分布式架构与分布式理论
文章目录 分布式架构什么是分布式系统分布式系统特性分布式系统面临的问题 分布式理论数据一致性CAP理论BASE理论 分布式架构 什么是分布式系统 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 所谓分…...
Qt——前言
一、Qt介绍 **Qt技术特指用来桌面应用开发;**客户端开发的重要任务就是编写和用户交互的界面;而与用户交互的界面有两种典型风格,1.命令行界面/终端界面,TUI;2.图形化界面,GUI; Qt就是用…...
RN:Error: /xxx/android/gradlew exited with non-zero code: 1
问题 执行 yarn android 报错: 解决 这个大概率是缓存问题,我说一下我的解决思路 1、yarn doctor 2、根据黄色字体提示,说我包版本不对(但是这个是警告应该没事,但是我还是装了) npx expo install --…...
今日科普:了解、预防、控制高血压
高血压,常被称为“隐形的健康威胁”,许多患者可能在毫无预警的情况下发病,且患病率逐年攀升,同时患者群体逐渐年轻化,高血压虽然难以根治,但并不可怕,真正可怕的是血压长期居高不下,…...
Spark关于 ExpressionEncoder[T] 以及 RowEncoder 以及Spark怎么做外部数据和内部数据的转换
背景 本文基于 Spark 3.3, 最近在用 Spark Api 做 DataSet[Row] 转换的时候遇到了一些 Spark内部转换的问题, 在此记录一下。 杂谈 我们知道在Spark中分为 InternalRow和Row, 前者是 Spark 内部的使用的一行数据的表示,后者是给Spark开发者使用的行数…...
D-Day 上海站回顾丨以科技赋能量化机构业务
5月31日下午,DolphinDB 携手光大证券,在上海成功举办 D-Day 行业交流会。三十余位来自私募机构的核心策略研发、量化交易员、数据分析专家们齐聚现场,深入交流量化投研交易过程中的经验、挑战及解决方案。 DolphinDB 赋能机构业务平台 来自光…...
业财一体化的重点、难点和模式
业财一体化的内涵是企业将经营活动、财务管理、经营决策等进行科学的融合和管理,进而提高企业经营管理和财务决策的科学性,同时,基于IT技术、流程再造和组织重构更好的保障企业价值创造功能的实现。其涵盖管理循环、业务循环、信息循环三个双…...
gorse修改开源项目后,如何使用Docker compose发布
代码修改 git checkout v0.4.15 修改代码后提交。 镜像构建 export GOOSlinux export GOARCHamd64 export GOMAXPROCS8go build -ldflags"-s -w -X github.com/zhenghaoz/gorse/cmd/version.Version$(git describe --tags $(git rev-parse HEAD)) -X github.com/zhengh…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
