Shell开发实践:服务器的磁盘、CPU、内存的占用监控
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。
🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。
🎉欢迎 👍点赞✍评论⭐收藏
文章目录
- 🚀一、前言
- 🚀二、关于他们
- 🔎2.1 CPU(中央处理器)
- 🔎2.2 内存(也称为随机存取存储器RAM)
- 🔎2.3 磁盘(硬盘驱动器)
- 🚀三、监控实现
- 🔎3.1 监控CPU
- 🔎3.2 监控内存
- 🔎3.3 监控磁盘
- 🚀四、配置crontab
- 🚀五、总结
🚀一、前言
CPU、内存和磁盘是计算机中重要且相互依赖的组件。CPU执行运算和控制指令,内存提供临时存储空间用于存储CPU需要处理的数据和指令,而磁盘则提供长期存储的功能。它们共同工作以实现计算机的正常运行和数据处理任务。
本文主要通过shell实现如何监控他们的使用情况。
🚀二、关于他们
🔎2.1 CPU(中央处理器)
是计算机的核心组件之一,负责执行计算机指令和控制计算机的操作。它是计算机的“大脑”,决定了计算机的运行速度和性能。CPU包含多个核心,每个核心可以执行一个或多个线程的指令。
🔎2.2 内存(也称为随机存取存储器RAM)
是计算机用于存储数据和指令的地方。它是临时存储器,这意味着当计算机关闭或断电时,其中的数据会丢失。内存以字节为单位存储数据,并具有不同的访问速度和容量。计算机将需要处理的数据和指令从磁盘加载到内存中,然后CPU从内存中获取数据并进行处理。
🔎2.3 磁盘(硬盘驱动器)
是计算机用于长期存储数据和程序的设备。相比内存,磁盘的容量更大,但读写速度较慢。磁盘通常是非易失性存储器,这意味着即使计算机关闭或断电,其中的数据也能保持不变。磁盘由一个或多个盘片组成,这些盘片通过磁头来读取和写入数据。计算机通过操作系统和文件系统来管理磁盘上的数据。
🚀三、监控实现
🔎3.1 监控CPU
要编写一个shell脚本来监控CPU占用大小,可以使用命令top
来获取系统的CPU信息,并解析输出结果。
以下是一个示例的shell脚本代码,该脚本会循环读取CPU的占用情况,并在符合条件时输出提示信息。
#!/bin/bash# 设置阈值,当CPU占用超过该阈值时进行输出提示
threshold=80while true
do# 使用top命令获取CPU占用信息,并使用grep和awk筛选和解析输出结果cpu_usage=$(top -bn 1 | grep "%Cpu(s)" | awk '{print $2}')# 将浮点数转换为整数,以便进行比较cpu_usage=${cpu_usage%.*}echo "Current CPU Usage: ${cpu_usage}%"# 检查CPU占用是否超过阈值if [ $cpu_usage -gt $threshold ]thenecho "CPU Usage Exceeded Threshold!"# 在此处添加其他操作或通知机制fi# 定义间隔时间,以控制检查频率sleep 5
done
以上代码中,threshold
变量定义了设定的阈值,如果CPU占用超过该阈值,将输出警告信息。top
命令用于获取系统的CPU占用情况,grep
和awk
用于筛选和解析输出结果。sleep
命令定义了循环的间隔时间,这里设置为5秒。
你可以根据需求自定义脚本中的阈值、输出信息和其他操作。
🔎3.2 监控内存
你可以使用 free
命令来获取当前系统的内存占用情况,并使用 awk
命令来提取需要的信息。以下是一个示例代码:
#!/bin/bash# 设置阈值,当内存占用超过该阈值时发送警告
threshold=80while true; do# 使用 free 命令获取内存占用情况,并使用 awk 提取第三行的数据mem_info=$(free | awk 'NR==3{print $3/$2 * 100}')# 比较内存占用情况和阈值if (( $(echo "$mem_info > $threshold" | bc -l) )); thenecho "内存占用超过阈值($threshold%),当前占用为:$mem_info%"# 在此处添加发送警告的代码fi# 等待一段时间后再次监控sleep 5
done
在脚本中,free
命令用于获取内存占用情况,其中 awk 'NR==3{print $3/$2 * 100}'
表示提取 free
命令输出的第三行(包含内存占用信息),并计算内存占用百分比。与阈值进行比较后,如果超过阈值,则输出警告信息。你可以在警告部分加入发送邮件或其他通知的代码。
脚本中使用 sleep 5
表示每隔 5 秒重新检查一次内存占用情况,你可以根据需要更改该值。将以上代码保存为脚本文件(比如 memory_monitor.sh
),并通过 chmod +x memory_monitor.sh
命令给予执行权限后,就可以运行该脚本来监控内存占用情况了。
🔎3.3 监控磁盘
你可以使用df
命令来获取磁盘占用情况,然后编写一个shell脚本来监控磁盘占用大小。以下是一个示例代码:
#!/bin/bash# 设置阈值,当磁盘使用率超过该阈值时发送警报
THRESHOLD=90# 获取磁盘使用率,并提取百分比部分
usage=$(df -h | awk '$NF=="/"{printf "%s\n", $5}' | cut -d'%' -f1)# 检查磁盘使用率是否超过阈值
if [ $usage -gt $THRESHOLD ]; thenecho "磁盘使用率超过阈值,请及时清理!"
fi
将上述代码保存到一个文件(例如check_disk_usage.sh
),然后通过运行 bash check_disk_usage.sh
或者 ./check_disk_usage.sh
来执行脚本。
请注意,即使这个脚本可以监控磁盘使用情况,但它并不会持续监控。你可能需要使用定时任务工具(如cron)来定期运行这个脚本,以便实现长期监控。
🚀四、配置crontab
这些脚本写好了,需要定时执行,可以通过crontab配置每天或者几个小时跑一次。下面是每8小时跑一次的配置。
* */8 * * * bash /你的代码基础路径/disk.sh
🚀五、总结
服务器的CPU
、磁盘
和内存
是服务器运行和处理任务的关键组件,它们的正常运行状态对服务器的稳定性和性能至关重要。因此,监控服务器的CPU
、磁盘
和内存
的使用情况是非常必要的。
希望本文对您有所帮助,我们下次见。
相关文章:

Shell开发实践:服务器的磁盘、CPU、内存的占用监控
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…...
超详细 async和await 项目实战运用(附加文字解答+源码)
文章目录 问题描述async什么是 asyncasync 的作用async 的应用场景async 优点 await什么是 awaitawait 的作用await 的应用场景await 的优点async和 await结合使用 结束语 大家好!又到了愉快的周末假期,今天是2023年9月3日|农历七月十九,我最…...

Maven入门教程(三):Maven语法
视频教程:Maven保姆级教程 Maven入门教程(一):安装Maven环境 Maven入门教程(二):idea/Eclipse使用Maven Maven入门教程(三):Maven语法 Maven入门教程(四):Nexus私服 Maven入门教程(五):自定义脚手架 6.Mav…...
C++技术点,故事解析
语言的魅力 从人类诞生开始 ,南方古猿到现代人类经历了非常多变化; 南方古猿到能人 有什么变化? 能人会使用工具,由于会使用工具 就可以获得肉类食物,当然只能吃一些动物腐肉 直到进化成直立人的晚期,在东…...

数据结构(Java实现)-字符串常量池与通配符
字符串常量池 在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、更节省内存,Java为8种基本数据类型和String类都提供了常量池。…...
python强化学习--gym安装与使用
最近开始学习强化学习,第一步肯定是要学会安装和使用pym,原本以为很简单,事实上确实很简单,但是遇到一个小问题,就是安装gym之后,在应用的过程中,游戏界面没有显示出来,了解后才知道…...

105. 从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 思路:题目给出了先序遍历和中序遍历的结果,因为先序遍历遵循根–>左–>…...

(第六天)初识Spring框架-SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录
SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录(第六天)初识Spring框架 昨天我们已经把Mybatis框架的基本知识全部学完,内容有Mybatis是一个半自动化的持久层ORM框架,深入学习编写动态SQL&a…...

如何使用『Nginx』配置后端『HTTPS』协议访问
前言 本篇博客主要讲解如何使用 Nginx 部署后端应用接口 SSL 证书,从而实现 HTTPS 协议访问接口(本文使用公网 IP 部署,读者可以自行替换为域名) 申请证书 须知 请在您的云服务平台申请 SSL 证书,一般来说证书期限…...

Git仓库简介
1、工作区、暂存区、仓库 工作区:电脑里能看到的目录。 暂存区:工作区有一个隐藏目录.git,是Git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区…...
TensorRTC++ | INT8量化
Int8量化步骤 // 这是基本需要的组件 auto builder = make_nvshared(nvinfer1::createInferBuilder(logger)); auto config = make_nvshared(builder->createBuilderConfig())...
VS + qt环境使用QCustomPlot等三方库如何配置
文章目录 前言VS环境下引入第三方类库QCustomPlot方法一:解决办法: C中.dll与.lib文件的生成与使用1. 两种库:2.两种文件的区别 前言 Qt提供了显式和隐式导入第三方库方法,本文只介绍显示导入方法。 一般的第三方提供的库文件包…...

OS 段页结合的实际内存管理
虚拟内存承接段和页,从用户角度,虚拟内存提供段,从硬件角度,虚拟内存把段打散映射到页 先基于段的翻译,再基于页的翻译 p是pcb跟着进程换,64M一个段,set base就是建段表 因为每个进程虚拟地址…...

一种改进多旋翼无人机动态仿真的模块化仿真环境研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

02-请解释一下Java的内存模型和happens-before规则?【Java面试题总结】
请解释一下Java的内存模型和happens-before规则? 概念:Java内存模型,简称JMM,是一种定义了多线程程序中内存访问行为的规范。它定义了线程如何与主内存和工作内存进行交互,以及如何保证多线程程序的正确性和可见性。J…...
PVE 8 出现CPU 100% 冻结(卡死)
最近在研究PVE,然后下载官方最新版本系统8.x安装好后出现卡死问题,就连开个软件CPU也能飙到100%,开始我以为是硬件问题可能是资源不够,但是将系统切换回裸机(不用PVE启动)一点问题也没有,后来逐…...

【高效编程技巧】编程菜鸟和编程大佬的差距究竟在哪里?
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《高效编程技巧》《C语言进阶》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言1.如何写出好的代码?1.2 如何分析一个函数写的怎么样 2. 代码板式的重要性2.1 代码…...

继承【C++】
文章目录 继承的概念继承的定义继承方式和访问限定符继承基类成员访问方式的变化 默认继承方式 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元静态成员菱形继承及菱形虚拟继承继承的方式 菱形虚拟继承菱形虚拟继承原理 继承的概念 继承(inheritance)…...

ORB-SLAM3复现过程中遇到的问题及解决办法
在复现过程中遇到的问题的解决过程 1. 版本检查1.1 Opencv版本的检测1.2 Eigen版本的检测1.3 查看Python版本1.4 其他 2. 编译过程中遇到的问题及解决办法2.1 ./build.sh遇到的问题2.2 ./build_ros.sh遇到的问题 因为环境比较干净,所以遇到的问题相对少一些…...
vue开发桌面exe应用
vue开发桌面exe应用 Electron-vue 参考 Electron-vue搭建vue全家桶Element UI客户端(一) 如何使用Vue.js构建桌面应用程序...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...