用于监视Linux上的内存使用情况的Bash脚本

2019-06-17 11:32:45作者:戴进稿源:云网牛站

在本文中,我们添加了两个shell脚本来监视Linux操作系统上的内存利用率,即用于监视Linux上的内存使用情况的Bash脚本,当系统达到给定阈值时,它将触发并发送电子邮件给你。可以参考脚本在实践中的应用:用脚本的方法解决搜狗拼音占用大量内存的问题

方法一、Linux Bash脚本监视内存利用率并发送电子邮件

如果只想在系统达到给定阈值时通过邮件获取当前内存利用率百分比,请使用以下脚本。这是非常简单,一行脚本,在大多数情况下,我更喜欢使用这种方法。当你的系统达到内存利用率的80%时,它将触发电子邮件:

*/5 * * * * /usr/bin/free | awk '/Mem/{printf("RAM Usage: %.2f%\n"), $3/$2*100}' |  awk '{print $3}' | awk '{ if($1 > 80) print $0;}' | mail -s "High Memory Alert" ywnz@qq.com

注意:请自行更改电子邮件,此外,你可以根据你的要求更改内存利用率阈值,比如达到70%时。

输出:将收到类似下面的电子邮件提醒:

High Memory Alert: 80.40%

方法二、Linux Bash脚本监视内存利用率并发送电子邮件

如果要在邮件警报中获取有关内存利用率的更多信息,请使用以下脚本,其中包括基于top命令和ps命令的最高内存利用率进程详细信息,这将立即让你了解系统的运行情况。

参考:top命令_Linux top命令使用详解:显示或管理执行中的程序

当你的系统达到内存利用率的80%时,它将触发电子邮件。注意:请自行更改电子邮件,此外,可以根据你的要求更改内存利用率阈值。

# vi /opt/scripts/memory-alert.sh

#!/bin/sh

ramusage=$(free | awk '/Mem/{printf("RAM Usage: %.2f\n"), $3/$2*100}'| awk '{print $3}')

if [ "$ramusage" > 20 ]; then

SUBJECT="ATTENTION: Memory Utilization is High on $(hostname) at $(date)"

MESSAGE="/tmp/Mail.out"

TO="ywnz@qq.com"

echo "Memory Current Usage is: $ramusage%" >> $MESSAGE

echo "" >> $MESSAGE

echo "---------------------------------------------" >> $MESSAGE

echo "Top Memory Consuming Process Using top command" >> $MESSAGE

echo "---------------------------------------------" >> $MESSAGE

echo "$(top -b -o +%MEM | head -n 20)" >> $MESSAGE

echo "" >> $MESSAGE

echo "---------------------------------------------" >> $MESSAGE

echo "Top Memory Consuming Process Using ps command" >> $MESSAGE

echo "---------------------------------------------" >> $MESSAGE

echo "$(ps -eo pid,ppid,%mem,%Memory,cmd --sort=-%mem | head)" >> $MESSAGE

mail -s "$SUBJECT" "$TO" < $MESSAGE

rm /tmp/Mail.out

fi

最后添加一个cronjob来自动执行此操作,它将每5分钟运行一次:

# crontab -e

*/5 * * * * /bin/bash /opt/scripts/memory-alert.sh

注意:由于脚本计划每5分钟运行一次,因此你将在5分钟后收到电子邮件警报,如果觉得5分钟太频繁,可以更改为10分钟或者1小时都可。

输出:将收到类似下面的电子邮件提醒,如下图:

 

用于监视Linux上的内存使用情况的Bash脚本的更多相关文章

  1. 如何在Linux上清理内存缓存、缓冲与交换空间

    如何在Linux上清理内存缓存.缓冲与交换空间 与其他类型的操作系统一样,GNU/Linux已经有效的实现了内存管理,甚至更加优秀.但是如果任何进程正在吃光你的内存,并且你想清理它,Linux提供了一 ...

  2. 全面了解 Linux 服务器 - 2. 查看 Linux 服务器的内存使用情况

    2. 查看 Linux 服务器的内存使用情况 liuqian@ubuntu:~$ free -m total used free shared buffers cached Mem: 1983 186 ...

  3. Linux中检查内存使用情况的命令

    Linux操作系统包含大量工具,所有这些工具都可以帮助您管理系统.从简单的文件和目录工具到非常复杂的安全命令,在Linux上没有太多不能做的事情.而且,虽然普通桌面用户可能不需要在命令行熟悉这些工具, ...

  4. Linux下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  5. Linux 下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  6. linux查看进程内存使用情况,以及将线程情况输出文件

    用jmap把进程内存使用情况dump到文件中,再用jhat分析查看.jmap进行dump命令格式如下: jmap -dump:format=b,file=/tmp/dump.dat 21711  -- ...

  7. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  8. Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务

    文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...

  9. 使用SpringCloud实现的微服务软件开发部署到Linux上占用内存过大问题解决办法

    问题描述 最近上线的一个使用JAVA的Spring Cloud开发的ERP软件,部署上线时发现很严重的内存资源占用过高问题,而实际上开发测试并没有很大的访问量,甚至却出现了服务器无法正常访问的现象. ...

随机推荐

  1. ELK7.11.2版本安装部署及ElastAlert告警相关配置

    文档开篇,我还是要说一遍,虽然我在文档内容中也会说好多遍,但是希望大家不要嫌我墨迹: 请多看官方文档,请多看命令行报错信息,请多看日志信息,很多时候它们比百度.比必应.比谷歌有用: 请不要嫌麻烦,打开 ...

  2. DevEco Device Tool 2.1 Beta1 的Hi3861在Windows平台的编译体验

    DevEco Device Tool迎来了2.1 Beta1,其中的亮点之一是:支持Hi3861开发板的源码在Windows平台编译.带着浓厚的兴趣,第一时间做了一次体验. 首先在官网下载" ...

  3. 无法Ping通阿里云服务器的公网IP地址的解决方法

    解决步骤: 1.打开控制台2.打开防火墙3.添加规则添加规则的详情页,可以添加全部TCP也可以自定义添加一定端口范围的TCP:

  4. OkHttp配置HTTPS访问+服务器部署

    1 概述 OkHttp配置HTTPS访问,核心为以下三个部分: sslSocketFactory() HostnameVerifier X509TrustManager 第一个是ssl套接字工厂,第二 ...

  5. aws 通过eksctl 创建eks

    主要需要参考: https://eksctl.io/ https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/getting-started-ek ...

  6. 在kubernetes上部署zookeeper,kafka集群

    本文采用网上镜像:mirrorgooglecontainers/kubernetes-zookeeper:1.0-3.4.10 准备共享存储:nfs,glusterfs,seaweed或其他,并在no ...

  7. JDK8新特性(一) Lambda表达式及相关特性

    函数式接口 函数式接口是1.8中的新特性,他不属于新语法,更像是一种规范 面向对象接口复习 在这里先回顾一下面向对象的接口,创建接口的关键字为interface,这里创建一个日志接口: public ...

  8. phpstorm2017 激活方法

    1.license server 在线激活方式 不是很推荐,自己有服务器的话可以考虑搭建 以下地址可以用一下,不保证长期有效 http://idea.goxz.gq http://v2mc.net:1 ...

  9. SSL证书及HTTPS服务器

    1. 域名 在万网购买,略 2. 云服务器 阿里云购买,略 3. 安装lnmp 使用lnmp.org程序,略 4. 申请证书 阿里云-管理控制台-安全(云盾)-证书服务-购买证书证书类型: 免费型DV ...

  10. 【接口参数解析BUG】SpringMVC接口参数解析

    今天遇到一个BUG,前端传递数字数组时,后端使用字符串类型去接收,结果无法接收到,代码如下 问题: GET请求: 前端: configJsonArray:[1,2] 后端: private Strin ...