centos7查看当前cpu运行模式_linux中监控CPU、内存和磁盘状态的shell脚本。(centos7)...

这篇博客中所写的脚本,在实际工作中并没有什么卵用,工作中并不会用到这种脚本去监控。不过自己写一遍,可以让初学者对CPU、内存、磁盘等一些基础知识和基础命令更加了解。

1、利用vmstat工具监控CPU详细信息,然后基于/proc/stat计算CPU利用率进行监控,超过80报警并提取出占用cpu最高的前十进程。

vmstat是Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。

r:运行队列中的进程数;b:等待IO的进程数。

swpd:已用虚拟内存大小(k);free:空闲内存大小;buff:已用缓冲大小;cache:已用缓存大小。

si:每秒从交换区写入内存的大小(kb/s);so:每秒从内存写入交换分区的大小。

bi:每秒读取的块数;bo每秒写入的块数。

in:每秒中断数,包括时钟中断;cs:每秒上下文切换数。

us(user time):用户进程执行消耗cpu时间;sy(system time):系统进程执行消耗cpu时间;id:空闲时间(包括IO等待时间);wa:等待IO时间。

/proc/stat:

这个文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。可以利用其中信息计算cpu的利用率。

每行每个参数的意思为(以第一行为例,单位:jiffies,1jiffies=0.01秒):

user(62124):从系统启动开始累计到当前时刻,用户态的CPU时间,不包含 nice值为负进程。

nice(11):从系统启动开始累计到当前时刻。

system(47890):从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间。

idle(8715270):从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间。

iowait(84729):从系统启动开始累计到当前时刻,硬盘IO等待时间。

irq(0):从系统启动开始累计到当前时刻,硬中断时间。

softirq(1483):从系统启动开始累计到当前时刻,软中断时间。

CPU时间=user+nice+system+idle+iowait+irq+softirq。

CPU利用率=(idle2-idle1)/(cpu2-cpu1)*100。

ps aux:

显示其他用户启动的进程(a)

查看系统中属于自己的进程(x)

启动这个进程的用户和启动时间 (u)

代码如下:

#!/bin/bash

#

CPU_us=$(vmstat | awk '{print $13}' | sed -n '$p')

CPU_sy=$(vmstat | awk '{print $14}' | sed -n '$p')

CPU_id=$(vmstat | awk '{print $15}' | sed -n '$p')

CPU_wa=$(vmstat | awk '{print $16}' | sed -n '$p')

CPU_st=$(vmstat | awk '{print $17}' | sed -n '$p')

CPU1=`cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`

sleep

CPU2=`cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`

IDLE1=`echo $CPU1 | awk '{print $4}'`

IDLE2=`echo $CPU2 | awk '{print $4}'`

CPU1_TOTAL=`echo $CPU1 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`

CPU2_TOTAL=`echo $CPU2 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`

IDLE=`echo "$IDLE2-$IDLE1" | bc`

CPU_TOTAL=`echo "$CPU2_TOTAL-$CPU1_TOTAL" | bc`

#echo -e "IDLE2:$IDLE2\nIDLE1:$IDLE1\nCPU2:$CPU2_TOTAL\nCPU1:$CPU1_TOTAL"

#echo -e "IDLE:$IDLE\nCPU:$CPU_TOTAL"

RATE=`echo "scale=4;($CPU_TOTAL-$IDLE)/$CPU_TOTAL*100" | bc | awk '{printf "%.2f",$1}'`

echo -e "us=$CPU_us\tsy=$CPU_sy\tid=$CPU_id\twa=$CPU_wa\tst=$CPU_st"

echo "CPU_RATE:${RATE}%"

CPU_RATE=`echo $RATE | cut -d. -f1`

#echo "CPU_RATE:$CPU_RATE"

if [ $CPU_RATE -ge ]

then echo "CPU Warn"

ps aux | grep -v USER | sort -rn -k3 | head

fi

2、利用free工具监控内存利用率,超过80报警并提取出占用内存最高的前十进程。

代码如下:

#!/bin/bash

#

total=$(free -m | sed -n '2p' | awk '{print $2}')

used=$(free -m | sed -n '2p' | awk '{print $3}')

free=$(free -m | sed -n '2p' | awk '{print $4}')

shared=$(free -m | sed -n '2p' | awk '{print $5}')

buff=$(free -m | sed -n '2p' | awk '{print $6}')

cached=$(free -m | sed -n '2p' | awk '{print $7}')

rate=`echo "scale=2;$used/$total" | bc | awk -F. '{print $2}'`

echo -e "total\tused\tfree\tshared\tbuffer\tavailable"

echo -e "${total}M\t${used}M\t${free}M\t${shared}M\t${buff}M\t${cached}M\nrate:${rate}%"

if [ $rate -ge ]

then echo "Memory Warn"

ps aux | grep -v USER | sort -rn -k4 | head

fi

3、利用df命令监控磁盘利用率,超过80报警。

df :显示磁盘分区上的可使用的磁盘空间。

-h 以更易读的方式显示;

-P 使用POSIX的输出格式。

#!/bin/bash

#

DEV=`df -hP | grep '^/dev/*' | cut -d' ' -f1 | sort`

for I in $DEV

do dev=`df -Ph | grep $I | awk '{print $1}'`

size=`df -Ph | grep $I | awk '{print $2}'`

used=`df -Ph | grep $I | awk '{print $3}'`

free=`df -Ph | grep $I | awk '{print $4}'`

rate=`df -Ph | grep $I | awk '{print $5}'`

mount=`df -Ph | grep $I | awk '{print $6}'`

echo -e "$I:\tsize:$size\tused:$used\tfree:$free\trate:$rate\tmount:$mount"

F=`echo $rate | awk -F% '{print $1}'`

if [ $F -ge ];then

echo "$mount Warn"

else echo "It's OK"

fi

done

CPU物理信息

查看物理cpu个数:

cat /proc/cpuinfo | grep "physical id" | uniq | wc -l

查看cpu核数:

cat /proc/cpuinfo | grep "cpu cores" | uniq

查看逻辑cpu个数:

cat /proc/cpuinfo | grep "processor" | wc -l

Linux中监控命令top命令使用方法详解

收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...

python之psutil模块(获取系统性能信息(CPU,内存,磁盘,网络)

一.psutil模块 1. psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...

linux性能监控 -CPU、Memory、IO、Network等指标的讲解

[操作系统-linux]linux性能监控 -CPU.Memory.IO.Network等指标的讲解(转) 一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,Syst ...

linux Java项目CPU内存占用高故障排查

linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...

[转帖]Linux中buff/cache内存占用过高解决办法

Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...

AIX/Linux/HP-UX查看CPU/内存/磁盘/存储命令

1.1    硬件环境验证方式 硬件环境主要包括CPU.内存.磁盘/存储.网络设备(如F5等).系统特有设备(如密押设备等)等,其中网络设备和系统特有设备由网络管理员或项目组提供为准,本节主要关注CP ...

[C++]Linux之虚拟文件系统[/proc]中关于CPU/内存/网络/内核等的一些概要性说明

声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步- 0.0 1.Linux虚拟文件系统 首先要明白 ...

centos8平台使用pidstat监控cpu/内存/io

一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...

linux中free命令内存分析

Mem(物理内存分配情况)行 total:表示物理 内存总量 used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用 free:未被分配的内存 s ...

随机推荐

linux系统下sendmail的搭建

学习鸟哥linux私房菜所得 sendmail 可以使用rpm -qa |grep sendmail来查看一下是否已安装sendmail-cf和sendmail 如果没有安装可用yum -y inst ...

sync

tools-android-Sync Project ---------------- file-Project Structure add dependencies

js实现一个可以兼容PC端和移动端的div拖动效果

前段时间写了一个简单的div拖动效果,不料昨天项目上正好需要一个相差不多的需求,就正好用上了,但是在移动端的时候却碰到了问题,拖动时候用到的三个事件:mousedown.mousemove.mouse ...

hdu2089 数位dp

不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

MySQL表中数据的迁移

INSERT INTO `crm_attachment`(OPERATOR_ID,ATTACHMENT_ID,TYPE ) SELECT APPLICATION_ID ,ATTACHMENT_ID,' ...

jmap命令(Java Memory Map)(转)

JDK内置工具使用 一.javah命令(C Header and Stub File Generator) 二.jps命令(Java Virtual Machine Process Status To ...

coreData旧版本增加字段,新版本是否可以继续使用旧版本内容的测试(MagicalRecord的使用)

coreData使用第三方库MagicalRecord, 参考文章:http://blog.csdn.net/kuizhang1/article/details/21200367 coreData数据 ...

PAT 1012

1012. The Best Rank (25) To evaluate the performance of our first year CS majored students, we consi ...

SGU 106 The Equation 扩展欧几里得应用

Sol:线性不定方程+不等式求解 证明的去搜下别人的证明就好了...数学题. #include #include #include & ...

【云图】如何制作全国KTV查询系统?

原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...

你可能感兴趣的:(centos7查看当前cpu运行模式_linux中监控CPU、内存和磁盘状态的shell脚本。(centos7)...)