当前位置: 首页 > news >正文

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…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...