sendmail安装

#!/bin/bash
#控制发邮件的阈值是在rate,rate1和FF值(三个同样的用途,仅仅是名字不同)
#
#注:该博文中的变量不规范,我是随意定义的,请注意
#
#定义时间倒计时函数
stop_time(){
  kk=3
  while [ $kk -gt 0 ];do
  sleep 1
  kk=$(($kk - 1))
  echo -ne "\r \r"
  done
}
#free 监控内存使用率,超过80%就发邮件
#获取当前内存各值
mem_total=$(free -m | sed -n '2p' | awk '{print $2}')
mem_used=$(free -m | sed -n '2p' | awk '{print $3}')
mem_free=$(free -m | sed -n '2p' | awk '{print $4}')
mem_shared=$(free -m | sed -n '2p' | awk '{print $5}')
mem_buff=$(free -m | sed -n '2p' | awk '{print $6}')
mem_cached=$(free -m | sed -n '2p' | awk '{print $7}')
mem_rate=`echo "scale=2;$mem_used/$mem_total" | bc | awk -F. '{print $2}'`
[ ! -d /home/zpz/mail ] && mkdir /home/zpz/mail
echo "10分钟前内存使用情况:">>/home/zpz/mail/memory.txt
#换算成M和G为单位
echo -e "total: `expr $mem_total / 1000`G (${mem_total}M)
used: `expr $mem_used / 1000`G (${mem_used}M)
free: `expr $mem_free / 1000`G (${mem_free}M)
shared: `expr $mem_shared / 1000`G (${mem_shared}M)
buffer: `expr $mem_buff / 1000`G (${mem_buff}M)
available: `expr $mem_cached / 1000`G (${mem_cached}M)">>/home/zpz/mail/memory.txt
echo -e "rate:${mem_rate}%(如显示为 06% 即表示 0.06%,换算成G为单位时均以1000计算,而非1024)">>/home/zpz/mail/memory.txt
if [ $mem_rate -ge 40 ];then
  stop_time
  mem_total1=$(free -m | sed -n '2p' | awk '{print $2}')
  mem_used1=$(free -m | sed -n '2p' | awk '{print $3}')
  mem_rate1=`echo "scale=2;$mem_used1/$mem_total1" | bc | awk -F. '{print $2}'`
#判断2次统计的内存使用率
  if [ $mem_rate1 -ge $mem_rate ];then
    echo "">>/home/zpz/mail/memory.txt
    echo "当前内存使用情况:">>/home/zpz/mail/memory.txt
    echo -e "total: `expr $mem_total / 1000`G (${mem_total}M)
    used: `expr $mem_used / 1000`G (${mem_used}M)
    free: `expr $mem_free / 1000`G (${mem_free}M)
    shared: `expr $mem_shared / 1000`G (${mem_shared}M)
    buffer: `expr $mem_buff / 1000`G (${mem_buff}M)
    available: `expr $mem_cached / 1000`G (${mem_cached}M)">>/home/zpz/mail/memory.txt
    echo "rate:${mem_rate}%(换算成G为单位时均以1000计算,而非1024)">>/home/zpz/mail/memory.txt
  fi
else
#如果以上条件都不成立就将memory.txt文件清零并将各变量赋空值
  mem_opop=" "
  mem_kk=" "
fi

#监控磁盘使用率,超过80%就发邮件
DEV=`df -hP | grep '^/dev/*' | awk -F ' ' '{print $1}'|sort`
for i in $DEV
do
  disk_dev=`df -Ph | grep $i | awk '{print $1}'`
  disk_size=`df -Ph | grep $i | awk '{print $2}'`
  disk_used=`df -Ph | grep $i | awk '{print $3}'`
  disk_free=`df -Ph | grep $i | awk '{print $4}'`
  disk_rate=`df -Ph | grep $i | awk '{print $5}'`
  disk_mount=`df -Ph| grep $i | awk '{print $6}'`
#定义磁盘利用率
  disk_F=`echo $disk_rate | awk -F% '{print $1}'`
  if [ $disk_F -ge 40 ];then
    echo " ">>/home/zpz/mail/memory.txt
    echo " ">>/home/zpz/mail/memory.txt
    echo "10分钟前硬盘使用率: $disk_rate">>/home/zpz/mail/memory.txt
    for p in $DEV;do echo -e "$p:\tsize:$disk_size\tused:$disk_used\tfree:$disk_free\tmount: $disk_mount";done>>/home/zpz/mail/memory.txt

stop_time
    disk_dev1=`df -Ph | grep $i | awk '{print $1}'`
    disk_size1=`df -Ph | grep $i | awk '{print $2}'`
    disk_used1=`df -Ph | grep $i | awk '{print $3}'`
    disk_free1=`df -Ph | grep $i | awk '{print $4}'`
    disk_rate1=`df -Ph | grep $i | awk '{print $5}'`
    disk_mount1=`df -Ph | grep $i | awk '{print $6}'`
    disk_FF=`echo $disk_rate1 | awk -F% '{print $1}'`
#判断2次统计的硬盘使用率
    if [ $disk_FF -ge $disk_F ];then
      echo " ">>/home/zpz/mail/memory.txt
      echo "当前硬盘使用率: $disk_rate1">>/home/zpz/mail/memory.txt
      for H in $DEV;do echo -e "$H:\tsize:$disk_size1\tused:$disk_used1\tfree:$disk_free1\tmount: $disk_mount1";done >>/home/zpz/mail/memory.txt
    else
      echo " ">/home/zpz/mail/memory.txt
    fi
  fi
done
if [[ $mem_rate1 -ge 70 || $disk_FF -ge 80 ]];then
  mail -v -s "44服务器的硬盘警告" xxxxx@126.com</home/zpz/mail/memory.txt
  echo " ">/home/zpz/mail/memory.txt
fi

                            QQ群:   欢迎你的加入
                            该文章为原创,转载请注明原出处   谢谢合作

linux性能监控 + Sendmail 发邮件的更多相关文章

  1. Linux性能监控

    转自:http://blog.csdn.net/chosen0ne/article/details/8200737 linux性能监控,就是要监控系统的各个子系统是否正常.linux主要的子系统包括: ...

  2. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  3. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

  4. linux性能监控 -CPU、Memory、IO、Network等指标的讲解

    [操作系统-linux]linux性能监控 -CPU.Memory.IO.Network等指标的讲解(转) 一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,Syst ...

  5. Linux性能监控与分析之--- CPU

    Linux性能监控与分析之--- CPU 望月成三人关注 2016.07.25 18:16:12字数 1,576阅读 2,837 CPU性能指标 用户进程使用CPU的比率 系统进程使用CPU的比率 W ...

  6. Linux 性能监控的18个命令行工具

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我 ...

  7. linux安装配置sendmail实现邮件发送

    sendmail配置 yum -y update sendmail sendmail-cf SendMail相关目录1. 设定档目录:/etc/mail2. 记录档:/var/log/maillog3 ...

  8. Linux 性能监控、测试、优化工具

    Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 ...

  9. 三张图看遍Linux 性能监控、测试、优化工具

    Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 ...

随机推荐

  1. Python 3 中字符串和 bytes 的区别

    在Python中字符串和unicode真是傻傻分不清楚,在没搞懂两个区别时,你会发现程序报的错怎么改都是再报错,让你烦躁. 学习Python的时候,又重温了这部分内容,写了这个学习笔记. Python ...

  2. 微信小程序开发(三)点击事件

    接着上篇博客继续. 如下修改: // index.wxml <view>Hello World!</view> <button bindtap="but&quo ...

  3. linux基础—课堂随笔07_磁盘存储和文件系统

    磁盘管理 管理分区 列出块设备  lsblk parted命令 高级分区操作 用法:  parted [选项]... [设备 [命令 [参数]...]...]  parted /dev/sdb mkl ...

  4. 卸载TensorFlow

    卸载TensorFlow 1.先用pip3 list查看安装了那些TensorFlow,一般只有两个,另一个是TensorBoard 2.执行命令卸载 sudo apt remove --purge ...

  5. PAT Basic 1030 完美数列 (25 分)

    给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. 输入格 ...

  6. PAT Basic 1022 D进制的A+B (20 分)

    输入两个非负 10 进制整数 A 和 B (≤),输出 A+B 的 D (1)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: 输出 A+B 的 D 进制数. 输入 ...

  7. chrome插件开发-notification API注意事项

    1.win10系统,在系统设置里面,设置开启Google Chrome通知 2.iconUrl必须设置,且图片为ico格式

  8. Hutools之http工具类

    Hutools请求网络资源使用的工具类:HttpRequest和HttpResponse Get方式请求数据 Get方式请求数据Map<String,Object> paramMap = ...

  9. Linux之top 监视系统任务的工具

    top 监视系统任务的工具: 和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的:  top 命令用法及参数: top 调用方法: top 选择参数 参数: -b  以批量模式运 ...

  10. 浅谈响应式Web设计与实现思路

    是否还在为你的应用程序适配PC端,移动端,平板而苦苦思索呢,是否在寻找如何一套代码适配多终端方式呢,是否希望快速上手实现你的跨终端应用程序呢,是的话,那就看过来吧,本文阐述响应式UI设计相关理论基础, ...