使用shell脚本编写监控系统资源(CPU,内存,磁盘)使用情况

news2024/11/24 17:26:39

 

🏡作者主页:点击! 

🛠️Shell编程专栏:点击!

⏰️创作时间:2024年6月20日16点30分

🀄️文章质量:95分


目录

————前言————

1.本章目标

2.编写脚本

1.获取内存使用率

2.获取根分区磁盘占用率

3.设置监控阈值

4.检查CPU使用率

5.检查内存使用率

6.检查根分区磁盘使用率

7.测试


————前言————

在现代计算机系统中,确保系统资源的高效利用和及时响应异常情况至关重要。对于系统管理员和开发人员来说,监控CPU、内存和磁盘使用情况是日常维护的核心任务之一。Shell脚本作为一种强大而灵活的工具,能够帮助我们自动化这些监控任务,实时获取系统资源使用情况,并在资源使用超过设定阈值时及时发出警报。

1.本章目标

本篇文章将带领您学习如何编写一个简单但功能强大的Shell脚本,用于监控系统的CPU、内存和根分区磁盘的使用情况。当某项资源的使用率超过预设的警戒值时,脚本将自动发送警报邮件通知相关人员。通过本次学习,您将掌握基础的Shell编程技巧,并能将这些知识应用到实际的系统监控中去。准备好了吗?让我们开始探索Shell编程的世界吧!

题目

请编写一个Shell脚本,用于监控系统的CPU、内存和根分区磁盘的使用情况。该脚本需要在资源使用超过设定的阈值时发送警报邮件。

2.编写脚本

vim /sysmon.sh

加入一下内容

1.获取内存使用率

使用 free 命令和 awk 命令计算当前的内存使用率,并将其存储在变量 mem 中。

mem=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

解释如下:

  1. free:显示系统的内存使用情况。
  2. grep Mem:从 free 的输出中筛选出包含内存信息的那一行。
  3. awk '{print $3/$2 * 100.0}':计算内存使用率,将已用内存除以总内存并乘以100,得到百分比。
  4. mem=$(...):将计算结果存储在变量 mem 中。

2.获取根分区磁盘占用率

使用 df -h 命令和 awk 命令获取根分区(/)的磁盘占用率,并将其存储在变量 disk 中。

disk=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

解释如下:

  1. df -h /:显示根分区(/)的磁盘使用情况。
  2. awk 'NR==2 {print $5}':提取第二行的第五列数据,即根分区的使用率。
  3. sed 's/%//':去掉使用率百分比后的百分号。
  4. disk=$(...):将结果存储在变量 disk 中。

3.设置监控阈值

定义CPU、内存和磁盘使用率的阈值。分别为80%、90%和90%。

cpuce=80
ncce=90
cpce=90

解释如下:

  1. cpuce=80:设置CPU使用率警戒线为80%。
  2. ncce=90:设置内存使用率警戒线为90%。
  3. cpce=90:设置根分区磁盘使用率警戒线为90%。
4.检查CPU使用率

对比CPU使用率与设定的阈值,如果超过80%,则输出警告信息并发送邮件通知。

if (( $(echo "$cpu >= $cpuce" | bc -l) )); then
    echo "CPU占用率超过80% ($cpu%)"
    echo "CPU占用率超过80%" | mail -s "监控警报" monitor@bdqn.com
else
    echo "CPU占用率 $cpu%"
fi

解释如下:

  • if (( $(echo "$cpu >= $cpuce" | bc -l) )):使用 bc 计算表达式,如果 cpu 大于或等于 cpuce
  • echo "CPU占用率超过80% ($cpu%)":输出警告信息。
  • echo "CPU占用率超过80%" | mail -s "监控警报" monitor@bdqn.com:发送警报邮件。
  • elseecho "CPU占用率 $cpu%":如果 cpu 低于 cpuce,输出当前CPU使用率。
5.检查内存使用率

对比内存使用率与设定的阈值,如果超过90%,则输出警告信息并发送邮件通知。

if (( $(echo "$mem >= $ncce" | bc -l) )); then
echo "内存使用率超过90% ($mem%)"
echo "内存使用率超过90%" | mail -s "监控警报" monitor@bdqn.com
else
echo "内存使用率 $mem%"
fi

解释如下:

  • if (( $(echo "$mem >= $ncce" | bc -l) )):使用 bc 计算表达式,如果 mem 大于或等于 ncce
  • echo "内存使用率超过90% ($mem%)":输出警告信息。
  • echo "内存使用率超过90%" | mail -s "监控警报" monitor@bdqn.com:发送警报邮件。
  • elseecho "内存使用率 $mem%":如果 mem 低于 ncce,输出当前内存使用率。

6.检查根分区磁盘使用率

对比根分区磁盘使用率与设定的阈值,如果超过90%,则输出警告信息并发送邮件通知。

if (( $(echo "$disk >= $cpce" | bc -l) )); then
echo "磁盘使用率超过90% ($disk%)"
echo "磁盘使用率超过90%" | mail -s "监控警报" monitor@bdqn.com
else
echo "磁盘使用率 $disk%"
fi

解释如下:

  • if (( $(echo "$disk >= $cpce" | bc -l) )):使用 bc 计算表达式,如果 disk 大于或等于 cpce
  • echo "磁盘使用率超过90% ($disk%)":输出警告信息。
  • echo "磁盘使用率超过90%" | mail -s "监控警报" monitor@bdqn.com:发送警报邮件。
  • elseecho "磁盘使用率 $disk%":如果 disk 低于 cpce,输出当前磁盘使用率。

7.测试

编写完成之后执行测试

 "成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1876478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go 中使用map时注意的问题

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

uniapp uniCloud云开发

uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址:https://unicloud.dcloud.net.cn 文档:https://doc.dcloud.net.cn/uniCloud/ un…

AI绘画:P图如此丝滑,OpenAI上线ChatGPT图像编辑功能,DallE-3绘画如此简单

大家好我是极客菌,用ChatGPT的DallE-3进行AI绘画对很多人来说是一个门槛很低的选择,现在OpenAI又重磅上线了图像编辑器功能(DallE editor),可以很方便的对图片的局部进行修改,而且支持中文,主打一个功能强大且好用&…

论文学习——一种自适应提升的动态多目标优化进化算法

论文题目:A dynamic multi-objective optimization evolutionary algorithm with adaptive boosting 一种自适应提升的动态多目标优化进化算法(Hu Peng a,b,∗, Jianpeng Xiong a, Chen Pi a, Xinyu Zhou c, Zhijian Wu d)IEEE Swarm and Ev…

FreeSWITCH 1.10.10 简单图形化界面24-呼入呼出编码

FreeSWITCH 1.10.10 简单图形化界面24-呼入呼出编码 FreeSWITCH GUI界面预览00、安装FreeSWITCH GUI先看使用手册1、语音接听还是视频接听2、排查 FreeSWITCH GUI界面预览 http://myfs.f3322.net:8020/ 用户名:admin,密码:admin FreeSWITCH…

MySQL之如何定位慢查询

1、如何定位慢查询 1.1、使用开源工具 调试工具:Arthas 运维工具:Promethuss、Skywalking 1.2、MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒&#x…

The difference between Manhattan distance and Cosine Distance

题意:为什么即使返回了相同的文本块,曼哈顿距离(Manhattan Distance)和余弦距离(Cosine Distance)之间还是存在差异? 问题背景: I am using the qdrant DB and client for embeddin…

探索LangChain-Chatchat 0.3:一体化Agent与强大RAG模型的全面入门指南

介绍 LangChain-Chatchat 支持RAG和Agent0.3版本跟大模型解耦,支持Xinference、Ollama、LocalAI、FastChat、One API,可以非常方便的切换各个模型,本文只是介绍XinferenceXorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 X…

论文辅导 | 基于贝叶斯优化-卷积神经网络-双向长短期记忆神经网络的锂电池健康状态评估

辅导文章 模型描述 准确估计电池健康状态是设备稳定运行的关键。针对当前健康状态研究中容量难以直接测量、估计模型调参费时等问题,提出基于多健康特征的贝叶斯优化(BO)算法优化卷积神经网络(CNN)与双向长短期记忆&a…

气膜仓库的优势与应用—轻空间

随着现代物流和存储需求的不断增长,传统仓库的建设和运营成本日益增加,企业需要寻找更加灵活、高效和经济的解决方案。在这种背景下,气膜仓库作为一种新型仓储形式,以其独特的优势和广泛的应用前景,逐渐受到市场的青睐…

视频号视频怎么保存到手机,视频号视频怎么保存到手机相册里,苹果手机电脑都可以用

随着数字媒体的蓬勃发展,视频已成为我们日常生活中不可或缺的一部分。视频号作为众多视频分享平台中的一员,吸引了大量用户上传和分享各类精彩视频。然而,有时我们可能希望将视频号上的视频下载下来,以下将详细介绍如何将视频号的视频。 方法…

自养号测评助力:亚马逊、沃尔玛电商高效测评补单技巧,轻松实现销量与补单双赢

要在竞争激烈的市场中通过测评补单的方式提升产品权重和销售,构建一个稳定且高效的测评补单系统至关重要。通过精心培养一批高质量的买家账号,并深入了解真实买家的行为数据,结合对风控数据的精准把控,我们能够自主推动推广进程&a…

shell:处理命令行参数 获取用户输入

1. 命令行参数 1.1 位置参数 bash shell会将一些称为位置参数(positional parameter)的特殊变量分配给输入到命令行中的 所有参数。这也包括shell所执行的脚本名称。位置参数变量是标准的数字:$0是程序名,$1是第 一个参数,$2是第二个参数,依…

【LLM 评估】MMLU benchmark:用于衡量 LM 的多任务语言理解能力

论文:Measuring Massive Multitask Language Understanding ⭐⭐⭐⭐ ICLR 2021, arXiv:2009.03300 Code: GitHub 论文速读 本文提出了一个 benchmark:MMLU,一个覆盖了 57 个 subjects 的多项选择题的数据集。 数据集的 question 数量&…

SpringBoot-SpringBoot中文文档

简介 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于J…

设计模式 - Observer Pattern 观察者模式

文章目录 定义观察者模式的实现构成构成UML图 观察者模式的代码实现场景代码实现 总结优点缺点应用场景 其他设计模式文章: 定义 观察者模式是行为型模式的一种,它定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,它…

Apache HBase概述(图文并茂~)

HBase概述 1. Why we need HBase ? 在大数据时代来临之前,我们通常依赖传统的关系型数据库(如RDBMS)来处理数据存储和管理。然而,随着数据量的急剧增长和数据结构的多样化,传统数据库系统开始显露出其局限性…

手写一个基于SpringBoot的MVC架构,默认实现CRUD和导入导出功能

文章目录 前言正文一、项目结构二、技术点三、部分核心代码3.1 core-tool 中的核心代码3.1.1 所有实体的通用父类 SuperEntity3.1.2 所有枚举的父接口 BaseEnum3.1.3 所有业务异常的父接口 BaseException 3.2 mvc-tool 中的核心代码3.2.1 CrudController 接口定义3.2.2 默认的C…

文心一言 VS 讯飞星火 VS chatgpt (290)-- 算法导论21.3 3题

三、给出一个包含 m 个 MAKE-SET 、UNION 和 FINDSET 操作的序列(其中有 n 个是 MAKE-SET 操作),当仅使用按秩合并时,需要 Ω(mlgn) 的时间。如果要写代码,请用go语言。 文心一言: 在并查集(Union-Find)数…

STM32使用PWM驱动WS2812_RGB灯珠

项目场景: 使用STM32标准库产生PWM实现RGB灯珠控制。 芯片型号:stm32f405rgt6 设计优点:不需要使用定时器中断资源,可以使得STM32在驱动RGB灯珠的同时能够执行其他任务。 RGB灯珠简介 项目所使用的RGB灯珠如下所示,封装…