一、安装Vmware,并通过镜像安装centos7。

二、安装xshell(可以不装,可以直接在虚拟机中直接进行以下步骤)

三、安装mail

  一般Linux发送报警邮件通过本地邮箱或外部邮箱服务器,这里用最简单的方法实现linux 使用外部邮箱即可实现发送邮件功能

  yum -y install mailx

  yum -y install sendmail

若是安装之后报错,问题请参考:http://blog.sina.com.cn/s/blog_72682ca201017vxj.html

四、配置qq邮箱:

  • 获得授权码
  • 修改发件人配置文件
  1. 通过命令:[root@192 shell_test]# vi /etc/mail.rc进入并在里面设置发件人邮箱,第四行是授权码
  2. set from=xxxx@qq.com
    set smtp=smtp.qq.com
    set smtp-auth-user=xxxx@qq.com
    set smtp-auth-password=fvihrgcgisiodjid
    set smtp-auth=login

四、编写shell脚本

#!/bin/bash
#对cpu使用率进行获取
cpuMonitor=`top -n  | awk -F '[ %]+' 'NR==3 {print $3}'`
#对磁盘使用率进行获取
data_name="/dev/sda1"
diskMonitor=`df -h | grep $data_name | awk -F '[ %]+' '{print $5}'`
fileLog=/tmp/monitor.log
#获取内存情况
mem=`free -m | awk '{if(NR==2){print "Total Mem:" $2}else if(NR==3){print "Used Mem:" $3"\nFree Mem:" $4}}'`
mem_total=`free -m | awk -F '[ :]+' 'NR==2{print $2}'`
mem_used=`free -m | awk -F '[ :]+' 'NR==3{print $3}'`
#统计内存使用率
mem_used_persent=`awk 'BEGIN{printf "%.0f\n",('$mem_used'/'$mem_total')*100}'`
#获取报警时间
now_time=`date '+%F %T'`
function send_mail(){
        mail -s "监控报警" xxx@qq.com < /tmp/monitor.log
}
function check(){
        if [[ "$cpuMonitor" >0.0000001 ]] || [[ "$diskMonitor" > 0.000000000000001 ]] || [[ "$mem_used_persent" >0.0000000000000001 ]];then
                echo "报警时间:${now_time}" > $fileLog
                echo -e  "CPU使用率:${cpuMonitor}% \n 磁盘使用率:${diskMonitor}% \n 内存使
用率:${mem_used_persent}%" >> $fileLog
                send_mail
        fi
}
function main(){
        check
}
main

  注意:

  • 此时的邮箱地址为收件人邮箱地址,
  • 重定向的用法(即追加与覆盖)
  • 若想实现其它功能请自行完善

五、运行结果:(大致会出现以下界面)

六、定时自动执行脚本

  1. 注意安装并启动crontabs服务。参考:https://www.cnblogs.com/intval/p/5763929.html
  2. 执行命令安装并启动:
    • yum -y install crontabs
    • systemctl start crond
  3. (即每天的十点十分定时对cpu、内存、磁盘进行监控)

2018-10-2015:35:24

编写shell脚本实现对虚拟机cpu、内存、磁盘监控机制的更多相关文章

  1. 编写shell脚本kill掉占用cpu超过90%以上的程序

    由于集群用户经常会不懂如何提交作业,将作业直接运行到登录节点上,这样导致登录节点的cpu及内存占用很大,导致其他用户甚至无法登录.所以就想到了一种解决方法,写一个shell脚本,常驻登录节点,监控cp ...

  2. linux系统CPU内存磁盘监控发送邮件脚本

    #!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/ ...

  3. 编写shell脚本实现一键创建KVM虚拟机

    shell脚本一键创建虚拟机 代码如下: #!/bin/bashname=$1 #把位置变量$1重新定义为name(创建虚拟机的名字)path1=/var/lib/libvirt/images/ #i ...

  4. CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存

    CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存来自:互联网 时间:2020-03-22 阅读:114以下情况可能造成Linux内存占用过高服务配置存在直接分配错误,或隐性分 ...

  5. 编写shell脚本遇到的问题

    运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”: 原因是因为Linux下的换行符是 \n 而你在 ...

  6. 在windows下编写shell脚本

    注意两点: 1.第一行:#!/bin/bash 2.将文档格式转换为unix,因为在windows下编写shell脚本回车符是\n\r,而linux下的回车符是\n,所以在linux下运行脚本的时候, ...

  7. linux 的基本操作(编写shell 脚本)

    终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要.下面笔者就带你正式进入shell脚本的世界吧. 到现 ...

  8. 编写Shell脚本的最佳实践

    编写Shell脚本的最佳实践 http://kb.cnblogs.com/page/574767/ 需要记住的 代码有注释 #!/bin/bash # Written by steven # Name ...

  9. python编写shell脚本详细讲解

    python编写shell脚本详细讲解 那,python可以做shell脚本吗? 首先介绍一个函数: os.system(command) 这个函数可以调用shell运行命令行command并且返回它 ...

随机推荐

  1. linux认识

    linux基础 根目录 文档扩展名 在Linux中,跟windows的扩展名.exe .bat.dll不同,只要在那十个字符中有x权限,这个档案就是可执行的, 但是,可被执行和执行成功是两回事,在Li ...

  2. c语言中sprintf()函数中的%使用

    #include <stdio.h> #include <string.h> int main() { ] = {}; ] = {}; ] = {}; /*打印2个%*/ st ...

  3. 7月清北学堂培训 Day 5

    今天是钟皓曦老师的讲授~ 动态规划 动态规划的三种实现方法: 1.递推: 2.递归: 3.记忆化: 举个例子: 斐波那契数列:0,1,1,2,3,5,8…… Fn = Fn-1 + Fn-2 1.我们 ...

  4. 爬虫之操作excel

    几种常用模块的使用方法 注释:Excel 2003 即XLS文件有大小限制即65536行256列,所以不支持大文件,而Excel 2007以上即XLSX文件的限制则为1048576行16384列 下面 ...

  5. ACM之路(12)—— KMP & 扩展KMP & Manacher

    最近做完了kuangbin的一套关于kmp的题目(除了一道字典树的不会,因为还没学字典树所以先放放),做个总结.(kuangbin题目的链接:http://acm.hust.edu.cn/vjudge ...

  6. Python语法 - yield表达式(类似 m = yield i )

      yield是个表达式而不仅仅是个语句,所以可以使用x = yield r 这样的语法, yield表达式可以接收send()发出的参数,yield表达式是跟send方法一起配合使用   send方 ...

  7. 安装使用VUE

    安装使用VUE 如果是简单实用vue的话,可以直接引用js文件. https://vuejs.org/js/vue.js 但是在构建大型项目的时候推荐使用NPM安装,NPM能够很好的和诸如webpac ...

  8. v-on绑定特性命名带小横杠 ‘-’与props属性中变量怎么对应

    特性命名问题: 矛盾点一:html的特性不区分大小写 矛盾点二:Vue中除了模板命名,其他命名不允许出现小横杠 ‘-’ 在js文件内,命名为驼峰式,camerCase,进入html文件,自动转换成短横 ...

  9. Maven setting.xml简易配置

    使用国内阿里云的下载源: <?xml version="1.0" encoding="UTF-8"?> <settings> <l ...

  10. dbtreeview

    http://www.delphipages.com/comp/dynamic_dbtreeview-6302.html https://files.cnblogs.com/files/jijm123 ...