Shell----监控CPU/内存/负载高时的进程
Shell----监控CPU/内存/负载高时的进程
1、编写脚本

vim cpu-warning.sh
#!/bin/bash
#监控系统cpu的情况脚本程序 #取当前空闲cpu百份比值(只取整数部分)
[ ! -f /bin/sar ] && yum install sysstat -y &>/dev/null
cpu_idle=`sar -u 1 5|awk 'END{print $NF}'|awk -F'.' '{print $1}'` #设置空闲cpu的告警值为20%,如果当前cpu使用超过80%(即剩余小于20%),立即发邮件告警...
if (($cpu_idle < 20)); then #取系统当前时间(以覆盖的方式写入文件>)
date >> /home/sunli/scripts/cpu_day.txt #提取服务器1分钟、5分钟、15分钟的负载情况
top -b -n 1 | grep Cpu >> /home/sunli/scripts/cpu_day.txt # 提取服务器占cpu和内存最高前10位进程程序情况
echo "%MEN top 10" >> /home/sunli/scripts/cpu_day.txt
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head >> /home/sunli/scripts/cpu_day.txt
echo "%CPU top 10" >> /home/sunli/scripts/cpu_day.txt
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head >> /home/sunli/scripts/cpu_day.txt
fi
vim load-warning.sh
load_15=`uptime | awk '{print $NF}'`
#计算当前系统单个核心15分钟的平均负载值,结果小于1.0时前面个位数补0。
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`
#取上面平均负载值的个位整数
average_int=`echo $average_load | cut -f 1 -d "."`
#设置系统单个核心15分钟的平均负载的告警值为0.70(即使用超过70%的时候告警)。
load_warn=0.70
#当单个核心15分钟的平均负载值大于等于1.0(即个位整数大于0) ,直接发邮件告警;如果小于1.0则进行二次比较
#if (($average_int > 0)); then
# /home/sunli/scripts/load-check.sh
#else
#当前系统15分钟平均负载值与告警值进行比较(当大于告警值0.70时会返回1,小于时会返回0 )
load_now=`expr $average_load \> $load_warn`
#如果系统单个核心15分钟的平均负载值大于告警值0.70(返回值为1),则发邮件给管理员
if (($load_now == 1)); then
#取系统当前时间(以覆盖的方式写入文件>)
date >> /home/sunli/scripts/load_day.txt
#提取服务器1分钟、5分钟、15分钟的负载情况
uptime | awk '{print $8,$9,$10,$11,$12}' >> /home/sunli/scripts/load_day.txt
# 提取服务器占cpu和内存最高前10位进程程序情况
echo "%MEN top 10" >> /home/sunli/scripts/load_day.txt
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head >> /home/sunli/scripts/load_day.txt
echo "%CPU top 10" >> /home/sunli/scripts/load_day.txt
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head >> /home/sunli/scripts/load_day.txt
fi
#fi
vim mem-warning.sh
#!/bin/bash
#系统分配的交换分区总量
Mem_total=`free -m | grep Mem| awk '{print $2}'` #当前剩余的交换分区free大小
Mem_free=`free -m | grep Mem| awk '{print $4}'` #当前已使用的交换分区used大小
Mem_used=`free -m | grep Mem| awk '{print $3}'` if (($Mem_used != 0)); then #如果交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0
Mem_per=0`echo "scale=2;$Mem_free/$Mem_total" | bc` #设置交换分区的告警值为20%(即使用超过80%的时候告警)。
Mem_warn=0.20 #当前剩余交换分区百分比与告警值进行比较(当大于告警值(即剩余20%以上)时会返回1,小于(即剩余不足20%)时会返回0 )
Mem_now=`expr $Mem_per \> $Mem_warn` #如果当前交换分区使用超过80%(即剩余小于20%,上面的返回值等于0),立即发邮件告警
if (($Mem_now == 0)); then
#取系统当前时间(以覆盖的方式写入文件>)
date >> /home/sunli/scripts/mem_day.txt #提取服务器1分钟、5分钟、15分钟的负载情况
free -m >> /home/sunli/scripts/mem_day.txt # 提取服务器占mem和内存最高前10位进程程序情况
echo "%MEN top 10" >> /home/sunli/scripts/mem_day.txt
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head >> /home/sunli/scripts/mem_day.txt
echo "%CPU top 10" >> /home/sunli/scripts/mem_day.txt
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head >> /home/sunli/scripts/mem_day.txt
fi
fi

2、计划任务
crontab -e
*/1 * * * * /home/sunli/scripts/load-warning.sh > /dev/null 2>&1
*/1 * * * * /home/sunli/scripts/cpu-warning.sh > /dev/null 2>&1
*/1 * * * * /home/sunli/scripts/mem-warning.sh > /dev/null 2>&1
3、测试
安装系统压力测试工具
yum -y install stress
测试
stress --cpu 1
等待几分钟就可以查看啦
Shell----监控CPU/内存/负载高时的进程的更多相关文章
- 利用shell监控cpu、磁盘、内存使用率
利用shell监控cpu.磁盘.内存使用率,达到警报阈值发邮件进行通知 并配合任务计划,即可及时获取报警信息 #!/bin/bash ################################# ...
- Android去除CPU占用过高时屏幕四周闪红框
话说有些时间没有更新博客了,今天正好解决这个问题,顺便把它记录下来.. 今天遇到的情况是这样的,当CPU占用过高时,屏幕四周会出现一个红框. 闪一次两次算了,但是挺萌的(TMD)不停的闪,我的钛合金狗 ...
- linux Java项目CPU内存占用高故障排查
linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...
- linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志
想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell ...
- linux中Java项目占用cpu、内存过高时的排查经历
一.使用top命令查看占用高资源的java项目的进程ID(pid): top 二.查看该进程中的线程所占用资源的情况:top -Hp pid 三.查看该线程对应的16进制:printf %x 1112 ...
- centos8平台使用pidstat监控cpu/内存/io
一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...
- Nginx 关于进程数 与CPU核心数相等时,进程间切换的代价是最小的-- 绑定CPU核心
在阅读Nginx模块开发与架构模式一书时: "Nginx 上的进程数 与CPU核心数相等时(最好每个worker进程都绑定特定的CPU核心),进程间切换的代价是最小的;" &am ...
- shell脚本监控cpu/内存使用率 转
该脚本检测cpu和内存的使用情况,只需要调整memorySetting.cpuSetting.userEmail要发邮件报警的email地址即可 如果没有配置发邮件参数的哥们,已配置了的,直接飞到代码 ...
- Shell采集系统cpu 内存 磁盘 网络信息
cpu信息采集 cpu使用率 采集算法 通过/proc/stat文件采集并计算CPU总使用率或者单个核使用率.以cpu0为例,算法如下: 1. cat /proc/stat | grep ‘cpu0’ ...
随机推荐
- FL Studio通道乐器设置页详讲
上一篇文章我们说到FL Studio通道乐器设置页每个标签页面中几乎都是由包络.低频振荡器和滤波器这三个部分组成.我们之前只对包络进行的简单的介绍,相信很多同学对它还有其他两个的功能的了解还是云里雾里 ...
- 企业BI智能大屏,除了页面炫酷,还能带来什么?
当我们一谈到可视化大屏,超大画面.超强科技感.酷炫的呈现效果就会出现在我们的脑海中. 所谓数据可视化,就是通过图表.图形.地图等视觉元素,将数据中所蕴含的信息的趋势.异常和模式展现出来.与传统报表相比 ...
- day97:MoFang:移动端APP开发准备&移动端项目搭建&APICloud前端框架
目录 1.移动端开发相关概念 1.APP类型 2.移动端屏幕介绍 3.移动端自适配方案 4.元信息(meta) 2.APP开发准备 1.注册APPCLoud账号 2.下载APP开发编辑器 3.下载AP ...
- PHP 统计目录下文件数和文件大小
1 /** 2 * 统计文件数和文件大小 3 */ 4 private function getFileCacheCount($pathName) 5 { 6 $data = [ 7 'num' =& ...
- 【电子取证:FTK Imager篇】FTK Imager制作镜像详细介绍
FTK Imager制作镜像详细介绍 以DD镜像制造为例,详细介绍了FTK Imager创建镜像的过程,记得大学的时候学习这些没什么教程,找到的资料也是语焉不详,故在此啰嗦一番---[suy] 一.磁 ...
- H5,Css小姐又作画了
用H5和CSS3做出自己名字缩写. <html> <head> <meta charset="utf-8"> <title>name ...
- Java蓝桥杯练习——杨辉三角形
问题描述: 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数. 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加. 下面给出了杨辉三角形的前4行: 1 1 1 ...
- 16个非常有趣的HTML5 Canvas动画特效集合
HTML5技术正在不断的发展和更新,越来越多的开发者也正在加入HTML5阵营,甚至在移动开发上HTML5的地位也是越来越重要了.HTML5中的大部分动画都是通过Canvas实现,因为Canvas就像一 ...
- mysql一条sql语句如何执行的?
mysql 一条sql语句如何执行的? 文章内容源自:极客时间-林晓彬老师-MySQL实战45讲 学习整理 在了解一条查询语句如何执行之前,需要了解下MySQL的基本架构是怎样的,如下图所示: 可以看 ...
- CentOS下如何用nmon收集系统实时运行状况
#赋予执行权限 chmod +x nmon 执行./nmon可以查看实时的系统状态有提示的,d看磁盘,n看网络,c看cpu #如果不想看实时的,想收集系统长时间运行情况然后分析,可用这个 nohup ...