一、安装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. CF796C Bank Hacking 细节

    思路十分简单,答案只有 3 种可能,但是有一些细节需要额外注意一下. code: #include <bits/stdc++.h> #define N 300002 #define set ...

  2. kill/xkill/killall/pkill/pidof

    pidof 杀死进程的关键是找到进程id,杀错进程id是异常灾难, 使用ps -ef|grep 可以查看到相关进程的pid及ppid 可以直接kill掉ppid,其子进程也都会被杀死 也可以使用pid ...

  3. Gradle 发布 Jar 到 Archiva 时提示不能 Overwriting released artifacts is not allowed

    系统提示错误信息: Received status code 409 from server: Overwriting released artifacts is not allowed. 这是在 A ...

  4. 更改用户id 和组id

    转自 http://blog.csdn.net/todd911/article/details/16370577 在unix系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许 ...

  5. nodejs基础(回调函数、模块、事件、文件读写、目录的创建与删除)

    node官网:http://nodejs.cn/ 今天想看看node的视频,对node进一步了解, 1.我们可以从官网下载node到自己的电脑上,今天了解到node的真正概念,node时javascr ...

  6. 微信浏览器H5开发常见的坑

    ios端兼容input光标高度 问题详情描述: input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样.例如下图,左图是正常所期待的输入框光标 ...

  7. .net core 修改 Identity/AspNetUsers 数据库

    众所周知,.net core有一套完整的用户管理功能.使用它就能实现用户的管理及登录登出功能.现在问题来了,我们有时候需要添加一些字段,该怎么办呢?当然是修改他呀.修改方法参考链接:https://m ...

  8. Python JSON dump ,load,dumps,loads

    JSON是一种轻量级的数据交换格式. json.dump() 将Python数据格式序列化为json数据格式(字符串)并储存在json文件之中. json.load()将Jons数据(字符串)反序列化 ...

  9. js常用时间转换函数

    1.秒转换为时分秒 // 秒转换为时分秒 export function secExchangeMoment(value = 0){ let secondTime = parseInt(value); ...

  10. post请求导出Excel表格

    axios.interceptors.response.use((response) =>{ if(response.config && response.config.resp ...