编写shell脚本实现对虚拟机cpu、内存、磁盘监控机制
一、安装Vmware,并通过镜像安装centos7。
二、安装xshell(可以不装,可以直接在虚拟机中直接进行以下步骤)
三、安装mail
一般Linux发送报警邮件通过本地邮箱或外部邮箱服务器,这里用最简单的方法实现linux 使用外部邮箱即可实现发送邮件功能
yum -y install mailx
yum -y install sendmail
若是安装之后报错,问题请参考:http://blog.sina.com.cn/s/blog_72682ca201017vxj.html
四、配置qq邮箱:

- 获得授权码
- 修改发件人配置文件
- 通过命令:[root@192 shell_test]# vi /etc/mail.rc进入并在里面设置发件人邮箱,第四行是授权码
- 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
注意:
- 此时的邮箱地址为收件人邮箱地址,
- 重定向的用法(即追加与覆盖)
- 若想实现其它功能请自行完善
五、运行结果:(大致会出现以下界面)

六、定时自动执行脚本
- 注意安装并启动crontabs服务。参考:https://www.cnblogs.com/intval/p/5763929.html
- 执行命令安装并启动:
- yum -y install crontabs
- systemctl start crond

(即每天的十点十分定时对cpu、内存、磁盘进行监控)
2018-10-2015:35:24
编写shell脚本实现对虚拟机cpu、内存、磁盘监控机制的更多相关文章
- 编写shell脚本kill掉占用cpu超过90%以上的程序
由于集群用户经常会不懂如何提交作业,将作业直接运行到登录节点上,这样导致登录节点的cpu及内存占用很大,导致其他用户甚至无法登录.所以就想到了一种解决方法,写一个shell脚本,常驻登录节点,监控cp ...
- linux系统CPU内存磁盘监控发送邮件脚本
#!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/ ...
- 编写shell脚本实现一键创建KVM虚拟机
shell脚本一键创建虚拟机 代码如下: #!/bin/bashname=$1 #把位置变量$1重新定义为name(创建虚拟机的名字)path1=/var/lib/libvirt/images/ #i ...
- CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存
CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存来自:互联网 时间:2020-03-22 阅读:114以下情况可能造成Linux内存占用过高服务配置存在直接分配错误,或隐性分 ...
- 编写shell脚本遇到的问题
运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”: 原因是因为Linux下的换行符是 \n 而你在 ...
- 在windows下编写shell脚本
注意两点: 1.第一行:#!/bin/bash 2.将文档格式转换为unix,因为在windows下编写shell脚本回车符是\n\r,而linux下的回车符是\n,所以在linux下运行脚本的时候, ...
- linux 的基本操作(编写shell 脚本)
终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要.下面笔者就带你正式进入shell脚本的世界吧. 到现 ...
- 编写Shell脚本的最佳实践
编写Shell脚本的最佳实践 http://kb.cnblogs.com/page/574767/ 需要记住的 代码有注释 #!/bin/bash # Written by steven # Name ...
- python编写shell脚本详细讲解
python编写shell脚本详细讲解 那,python可以做shell脚本吗? 首先介绍一个函数: os.system(command) 这个函数可以调用shell运行命令行command并且返回它 ...
随机推荐
- LibreOJ #102. 最小费用流
二次联通门 : LibreOJ #102. 最小费用流 /* LibreOJ #102. 最小费用流 Spfa跑花费 记录路径 倒推回去 */ #include <cstring> #in ...
- Django—Ajax
Ajax-get url url(r'^ajax_add/', views.ajax_add), url(r'^ajax_demo1/', views.ajax_demo1), 视图 def ajax ...
- ubuntu 14.04 安装ntp
安装 sudo apt-get install ntp 修改ntp.conf配置文件 sudo vi /etc/ntp.conf 修改为如下内容 # Enable this if you want s ...
- EGL Driver message (Critical) eglInitialize: No available renderers.
使用Python的selenium库进行自动化巡检.并将相对应的数据保存 环境: Windows Embedded Standard Python 2.7.16 selenium 3.141.0 [0 ...
- 学习GeoServer遇到的问题及答案
简介:本文的记录学习GeoServer遇到的问题,如果已有答案将会附上. 1.GeoServer介绍?,功能? GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 Ge ...
- java学习之路(1)
java中的main()方法: 一.java主类中的主方法形式: public static void main(String[] args){ //TODO } 二.个部分解释: (1).publi ...
- .net core 修改 Identity/AspNetUsers 数据库
众所周知,.net core有一套完整的用户管理功能.使用它就能实现用户的管理及登录登出功能.现在问题来了,我们有时候需要添加一些字段,该怎么办呢?当然是修改他呀.修改方法参考链接:https://m ...
- arcgis python 删除一个数据库所有数据
# -*- coding: cp936 -*- import xlrd # must init xlrd import arcpy import os def main(): arcpy.env.wo ...
- 如何使用git cherry-pick将同一个仓库的某个分支的某些commit合并到当前分支?
答: git cherry-pick <another-branch's commit-id>
- 免费下载 SetupVPN CRX 3.7.0 for Chrome OR QQ浏览器
免费下载 SetupVPN CRX 3.7.0 for Chrome OR QQ浏览器 Lifetime Free VPN(微劈嗯) 下载setupvpn 3.7.0的crx文件, 打开chrome的 ...