编写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并且返回它 ...
随机推荐
- Codeforces 1221 F Choose a Square
题面 不知道大佬们怎么想的,反正我看到这种区间包含性质的并且score只和包含的区间与询问区间挂钩的题,马上就想到了扫描线23333 虽然革命方向无比正确,但却因为SB错误交了5次才 A. WA第一发 ...
- Cogs 1500. 误差曲线(三分)
误差曲线 ★★ 输入文件:errorcurves.in 输出文件:errorcurves.out 评测插件 时间限制:1 s 内存限制:256 MB [题目描述] Josephina是一名聪明的妹子, ...
- 数据分析之numpy使用
使用numpy生成数字 生成的类型是ndarray类型 t1 = np.array([1,2,3,4,5]) print(t1,type(t1)) # 类型为ndarray t2 = np.array ...
- 八、linux文件系统上的特殊权限 SUID 、GUID、Sticky
安全上下文 前提:进程有属主和属组,文件有属主和属组 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限 启动为进程之后,其进程的属主为发起者:进程的属组为发起者所属的组 进 ...
- easyui-textbox输入框数字校验
输入框数字校验 $("#reg_num").textbox('textbox').bind('keyup', function(e){ $("#reg_num" ...
- Redis使用Docker镜像安装
详细见本人以下文档: https://www.cnblogs.com/zyc-blogs/p/9621727.html
- COM 基础 之 三大基础接口
摘自 http://blog.csdn.net/liang4/article/details/7530512 1 COM组件实际上是一个C++类,而接口都是纯虚类.组件从接口派生而来. 2 COM组件 ...
- Maven:element '******' cannot have character [children]
此错误是由于XML文件的解析不正确造成的,因为在一个/某些标签之间存在奇怪和隐藏的字符. 这些字符可能来自网络上的复制粘贴.要解决此问题,请删除标签>标记定义之间的所有空格和换行符,然后将它们放 ...
- 讨论SQLite数据库损坏与修复
版权声明:博客将逐步迁移到 http://cwqqq.com https://blog.csdn.net/cwqcwk1/article/details/45541409 昨晚,朋友和我反馈SQL ...
- uni-app 保持登录状态 (Vuex)
在小程序中,保持登录状态是很常见的需求,今天就把写一写使用uni-app框架的保持登录状态功能是怎样实现的. 一.场景需求 1.场景:初始打开---登陆---关闭,再次打开---(已登录)上次关闭前的 ...