shell脚本写出监控内存,磁盘使用率的脚本,超过阈值,用“wall”命令发警报

简介: shell脚本写出监控内存,磁盘使用率的脚本,超过阈值,用“wall”命令发警报

1 脚本运行前准备

需要用到“bc”软件来进行运算

yum -y install bc

2 创建一个脚本

vim /opt/.zhuzhu.sh
#!/bin/bash 
# author chenjiao
#获取内存信息
MEMTOTAL=$(awk '/^MemTotal/ {print $2}' /proc/meminfo)
MEMAV=$(awk '/^MemAvailable/ {print $2}' /proc/meminfo)
MEMUSED=$(echo "$MEMTOTAL - $MEMAV" |bc)
MEMINFO=$(echo "$MEMUSED * 100 / $MEMTOTAL"|bc)
if [[ $MEMINFO -gt 70 ]];then
        echo "Memory usage is too high: $MEMINFO%" >> /tmp/info.txt
fi
#获取 / 磁盘信息
DISKTOTAL=$( df |grep -w "/"|awk '{print $2}')
DISKUSED=$( df |grep -w "/"|awk '{print $3}')
DISKINFO=$(echo "$DISKUSED * 100 / $DISKTOTAL" |bc)
if [[ $DISKINFO -gt 80 ]];then
        echo "Disk usage is too high: $DISKINFO%" >> /tmp/info.txt
fi
if [[ -f /tmp/info.txt ]];then
        cat /tmp/info.txt |wall
fi
mv /tmp/{info.txt,.info.txt.`date +"%Y.%m.%d-%H:%M:%S"`}

MEMTOTAL 是为了查找到总内存大小,MEMAV这个变量是为了取出可用的内存大小。用总内存大小减去可用内存大小,即为已用的内存数。free这命令也能截取出来,但本人觉得这个更加简洁

我服务器就一块磁盘,所以我grep -w 精准匹配到“/” 下,来进行计算

这个脚本的阈值,可以根据实际需求来调整

可以给这个脚本一个执行权限

chmod +x /opt/.zhuzhu.sh

3 结合crontab来定时检查内存和磁盘使用情况

crontab -e

创建任务,如果是普通用户,请记得加-u 用户名

crotab执行命令的时间间隔,日期取决于实际需求,我设置为隐藏文件名,每五分钟执行一次

*/5 * * * * /bin/bash /opt/.zhuzhu.sh

截图一个内存超过70% 的公告来看看~

[root@k8s-master ~]# Broadcast message from root@k8s-master (Sun Aug

7 22:45:01 2022):

Memory usage is too high: 75%

然后使用这台服务器的其他用户都可以看到这个wall的警告内容了

完结,撒花~~

目录
相关文章
|
1月前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
138 7
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
70 2
6种方法打造出色的Shell脚本
|
1月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
65 1
|
1月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
46 1
|
1月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
62 2
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
291 1
|
22天前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
1月前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80
|
1月前
|
Java
JVM运行时数据区(内存结构)
1)虚拟机栈:每次调用方法都会在虚拟机栈中产生一个栈帧,每个栈帧中都有方法的参数、局部变量、方法出口等信息,方法执行完毕后释放栈帧 (2)本地方法栈:为native修饰的本地方法提供的空间,在HotSpot中与虚拟机合二为一 (3)程序计数器:保存指令执行的地址,方便线程切回后能继续执行代码
22 3

热门文章

最新文章