前序

1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻

2,#vmstat –s 或者#vmstat 虚拟内存统计

3, #cat /proc/loadavg 从系统启动开始到当前累积时刻

4, #uptime 系统运行多长时间

5, #mpstat CPU的一些统计信息

6, #

一,linux系统CPU,内存,磁盘,网络流量监控脚本

[作者:佚名来源:不详时间:2010-7-6 【我来说两句大中小】  cme.sh网络流量监控使用

  [root@china213
~]# cd /bin

  [root@china213
bin]# ./cme.sh

  cpu
99

  disk
39

  mem
38

  nic
19855 33 0

  [root@china213
bin]#

  CPU剩余率,磁盘剩余率,内存剩余率,以及网卡接收的bps,pps和dps(丢包)

  把下面内容用vi命令写入到cme.sh中[root@china213
bin]# vi cme.sh,同时用[root@china213
bin]# chmod +x cme.sh增加可执行权限

  注意:shell文件开头必须以#!/bin/sh开始,在window中保存成cme.sh上传的时候会执行不了,可能是文件头的问题。

  ==============================不要把这行分各符放到cme.sh文件中=========================================

#!/bin/sh

eth="eth0 eth1 "

function get_eth_info()

{

name=$1

cat /proc/net/dev | awk
-F ':' '{if(NR>2)print $1" "$2" "$9"
"$10}' | awk '{print$1" "$2" "$3" "$5}'
| while \

read line

do

# echo $line

data=`echo $name"
"$line | awk '{if($1==$2)print $3" "$4" "$5}'`

if ! [ -z "$data"
]

then

echo $data

fi

done

}

function sum_eth()

{

rm -fr 12321.txt

for name in $eth

do

ret=`get_eth_info
$name`

#echo $ret | awk
'{bps+=$0;pps+$1;dps+=$2;print bps" "pps" "dps}'

echo $ret >>
12321.txt

done

cat 12321.txt | awk
'BEGIN{bps=0;pps=0;dps=0} {bps+=$1;pps+=$2;dps+=$3}END{print bps"
"pps" "dps}'

}

flow=`sum_eth`

disk=`df | awk
'BEGIN{total=0;avl=0;used=0;}NR > 1
{total+=$2;used+=$3;avl+=$4;}END{printf"%d",
avl/total*100}'`

#top -b -n 1 | grep -w
Mem | awk '{print"tot_mem: "$2" used_mem: "
$4 " free_mem: "$6" left:"$6/$2"%"}'

mem=`top -b -n 1 | grep
-w Mem | awk '{printf"%d",$6/$2*100}'`

#top -b -n 1 | grep -w
Cpu | awk '{print"cpu: "$5}' | awk -F '%' {print$1}

cpu=`top -b -n 1 | grep
-w Cpu | awk '{print$5}' | awk -F '%' '{printf"%d",$1}'`

tm=`date +%s`

if ! [ -f "flow.txt"
]

then

echo $tm" "$flow
>flow.txt

sleep 1

tm=`date +%s`

flow=`sum_eth`

fi

old_flow=`cat flow.txt`

new_flow=`echo $tm
$flow`

echo $new_flow
>flow.txt

#echo $old_flow

#echo $new_flow

final_flow=`echo
$old_flow $new_flow | awk '{dif_tm=$5-
$1;dif_byte=$6-$2;dif_pkt=$7-$3;dif_dpkt=$8-$4;printf"%d %d %
d",dif_byte*8/dif_tm, dif_pkt/dif_tm, dif_dpkt/dif_tm}'`

#final_flow=`echo
$old_flow $new_flow | awk '{print$0}'`

echo "cpu "$cpu

echo "disk "$disk

echo "mem "$mem

echo "nic
"$final_flow

二,监控CPU进程的CPU使用率

例如:mysqld

脚本:

1,获取某个进程的使用率

[root@test testCPU]#
cat topmysql.sh

#!/bin/bash

top -n 1 >
/root/testCPU/topmysql.log

if grep -q mysqld
/root/testCPU/topmysql.log

then cpu=`grep "mysqld"
/root/testCPU/topmysql.log | gawk '{print $9}'`

echo $cpu

else

echo "0"

fi

exit

[root@test testCPU]#

2,获取cpu使用率

[root@test home]# cat
getCPU.sh

#!/bin/sh

awk '$0 ~/cpu[0-9]/'
/proc/stat | while read line

do

echo "$line"
| awk '{total=$2+$3+$4+$5+$6+$7+$8;free=$5;\

print$1"
Free "free/total*100"%",\

"Used
" (total-free)/total*100"%"}'

done

[root@test home]#
./getCPU.sh

cpu0 Free 90.0662% Used
9.93379%

[root@test home]#

3,监控进程占用cpu最高的前几个进程

[root@test testCPU]# cat
pscpu.sh

#!/bin/bash

time=`date +%m%d%T`

ps aux|head -1;ps aux|grep
-v PID|sort -rn -k +3|head -3 >
/root/testCPU/pscpu$time.log

[root@test testCPU]#

# linux
取进程占用
cpu
最高的前10个进程
#ps
aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

取进程占用CPU最高的前五个进程

或者#
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -5

# linux
取进程占用
内存(MEM)最高的前10个进程
#ps
aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

####################################

Linux
进程管理命令详解(pstop

1, ps命令

作用:ps命令主要查看系统中进程的状态。

格式:ps
【选项】

主要选项如下。

-A:显示系统中所有进程的信息。
-e:显示所有进程的信息。
-f:显示进程的所有信息。
-l:以长格式显示进程信息。
-r:只显示正在运行的进程。
-u:显示面向用户的格式(包括用户名、CPU及内存使用情况等信息)。
-x:显示所有非控制终端上的进程信息。
-p:显示由进程ID指定的进程的信息。
-t:显示指定终端上的进程的信息。

说明:要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。根据显示的信息可以确定哪个进程正在运行、哪个进程被挂起、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标志号(PID)。所有这些信息对用户都很有用,对于系统管理员来说更为重要。使用"ps
-aux"命令可以获得终端上所有用户的有关进程的所有信息,下面结合图讲解进程的基本信息。

root@Linux ~]# ps
-aux
USER       PID %CPU %MEM   
VSZ   RSS TTY      STAT START  
TIME COMMAND
root        
1 0.0 0.0   2064   624 ?       
Ss   Sep27   0:03 init
[3]                                  

root         2 0.0
0.0      0     0
?        S<   Sep27  
0:03 [migration/0]
root        
3 0.0 0.0      0     0
?        SN   Sep27  
0:00 [ksoftirqd/0]
root        
4 0.0 0.0      0     0
?        S<   Sep27  
0:00 [watchdog/0]
root        
5 0.0 0.0      0     0
?        S<   Sep27  
0:04 [migration/1]
root        
6 0.0 0.0      0     0
?        SN   Sep27  
0:00 [ksoftirqd/1]
root        
7 0.0 0.0      0     0
?        S<   Sep27  
0:00 [watchdog/1]
root        
8 0.0 0.0      0     0
?        S<   Sep27  
0:05 [migration/2]
root        
9 0.0 0.0      0     0
?        SN   Sep27  
0:00 [ksoftirqd/2]
root       
10 0.0 0.0      0     0
?        S<   Sep27  
0:00 [watchdog/2]

图中第二行代码中,USER表示启动进程用户。PID表示进程标志号。%CPU表示运行该进程占用CPU的时间与该进程总的运行时间的比例。%MEM表示该进程占用内存和总内存的比例。VSZ表示占用的虚拟内存大小,以KB为单位。RSS为进程占用的物理内存值,以KB为单位。TTY表示该进程建立时所对应的终端,"?"表示该进程不占用终端。STAT表示进程的运行状态,包括以下几种代码:D,不可中断的睡眠;R,就绪(在可运行队列中);S,睡眠;T,被跟踪或停止;Z,终止(僵死)的进程,Z不存在,但暂时无法消除;W,没有足够的内存分页可分配;<高优先序的进程;N,低优先序的进程;L,有内存分页分配并锁在内存体内(实时系统或I/O)。START为进程开始时间。TIME为执行的时间。COMMAND是对应的命令名。
应用实例如下。
在进行系统维护时,如果CPU负载突然增加,而又不知道是哪一个进程造成的情况。使用命令:

#ps aux | sort +3n

因为%CPU选项在第三列,所以sort选3作为参数,+表示升序输出结果
.

2.top命令
top命令用来显示系统当前的进程状况。
格式:top
[选项]
主要选项如下。

d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将已完成或消失的子进程的CPU时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的进程。
n:显示更新的次数,完成后将会退出top。

说明:top命令和ps命令的基本作用是相同的,都显示系统当前的进程状况。但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。这里结合图来说明它给出的信息。

top - 15:01:27 up 48 days,
20:31, 3 users, load average: 0.08, 0.12, 0.42
Tasks: 174 total,  
1 running, 171 sleeping,   0 stopped,   2
zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.6%id, 0.3%wa, 0.0%hi,
0.0%si, 0.0%st
Mem:   2075312k total, 1996848k used,   
78464k free,   179360k buffers
Swap: 4128760k
total,       68k used, 4128692k free,
1298736k cached

PID USER     
PR NI VIRT RES SHR S %CPU %MEM    TIME+
COMMAND                                                            

9013 root      15   0 2328
1056 796 R 0.3 0.1   0:00.02
top                                                                

    1 root      15  
0 2064 624 536 S 0.0 0.0   0:03.80
init                                                               

    2 root      RT -5    
0    0    0 S 0.0 0.0  
0:03.88
migration/0                                                        

    3 root      36 19    
0    0    0 S 0.0 0.0  
0:00.04
ksoftirqd/0                                                        

    4 root      RT -5    
0    0    0 S 0.0 0.0  
0:00.00
watchdog/0                                                         

    5 root      RT -5    
0    0    0 S 0.0 0.0  
0:04.06
migration/1                                                        

    6 root      34 19    
0    0    0 S 0.0 0.0  
0:00.05
ksoftirqd/1                                                        

    7 root      RT -5    
0    0    0 S 0.0 0.0  
0:00.00
watchdog/1                                                         

    8 root      RT -5    
0    0    0 S 0.0 0.0  
0:05.96
migration/2                                                        

    9 root      34 19    
0    0    0 S 0.0 0.0  
0:00.04
ksoftirqd/2                                                        

   10 root      RT -5    
0    0    0 S 0.0 0.0  
0:00.00
watchdog/2                                                         

   11 root      RT -5    
0    0    0 S 0.0 0.0  
0:02.98
migration/3                                                        

   12 root      34 19    
0    0    0 S 0.0 0.0  
0:00.09 ksoftirqd/3

在图中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区的使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的交换分区。第六行显示的项目最多,下面列出了详细解释。
PID(Process
ID):进程标志号,是非零正整数。USER:进程所有者的用户名。PR:进程的优先级别。NI:进程的优先级别数值。VIRT:进程占用的虚拟内存值。RES:进程占用的物理内存值。SHR:进程使用的共享内存值。STAT:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。%CPU:该进程占用的CPU使用率。%MEM:该进程占用的物理内存和总内存的百分比。TIME:该进程启动后占用的总的CPU时间。COMMAND:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。top命令使用过程中,还可以使用一些交互的命令来完成其他参数的功能。这些命令是通过快捷键启动的。

<空格>:立刻刷新。
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

linux系统CPU,内存,磁盘,网络流量监控脚本的更多相关文章

  1. linux系统CPU内存磁盘监控发送邮件脚本

    #!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/ ...

  2. 极客时间-左耳听风-程序员攻略-Linux系统、内存和网络

    程序员练级攻略:Linux系统.内存和网络 Linux 系统相关 Red Hat Enterprise Linux 文档 . Linux Insides ,GitHub 上的一个开源电子书,其中讲述了 ...

  3. 获取并检查系统负载\CPU\内存\磁盘\网络

    安装依赖 需要net-tools.namp! CentOS:yum -y install net-tools nmap Ubuntu:apt-get update && apt-get ...

  4. Shell采集系统cpu 内存 磁盘 网络信息

    cpu信息采集 cpu使用率 采集算法 通过/proc/stat文件采集并计算CPU总使用率或者单个核使用率.以cpu0为例,算法如下: 1. cat /proc/stat | grep ‘cpu0’ ...

  5. python glances来监控linux服务器CPU 内存 IO使用

    什么是 Glances? Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具. 通过 Glances,我们可以监视 ...

  6. 一键获取linux内存、cpu、磁盘IO等信息脚本编写,及其原理详解

    更多linux知识,请关注公众号:一口Linux 一.脚本 今天主要分享一个shell脚本,用来获取linux系统CPU.内存.磁盘IO等信息. #!/bin/bash # 获取要监控的本地服务器IP ...

  7. 搭建一个简单的基于web的网络流量监控可视化系统

    本文转载于我的个人博客,转载请标明出处. 初衷 在腾讯云的学生认证申请提交上去n天之后,终于得到了审批,所以迫不及待的想玩玩腾讯云,作为一个搞网络的,自然有一些关于网络应用的小玩意,所以把以前部署过的 ...

  8. Windows系统CPU内存网络性能统计第一篇 内存

    最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量.现在将其整理一下(共有三篇),希望对大家有所帮助. 目录如下: 1.<Wind ...

  9. C/C++获取Linux系统CPU和内存及硬盘使用情况

    需求分析: 不使用Top  df  free 等命令,利用C/C++获取Linux系统CPU和内存及硬盘使用情况 实现: //通过获取/proc/stat (CPU)和/proc/meminfo(内存 ...

随机推荐

  1. svn服务器配置小记

    在这里/opt/svndata/repos1创建svn版本库svnadmin create /opt/svndata/repos1 创建成功后会在/opt/svndata/repos1目录下生成con ...

  2. hadoop笔记之MapReduce的应用案例(WordCount单词计数)

    MapReduce的应用案例(WordCount单词计数) MapReduce的应用案例(WordCount单词计数) 1. WordCount单词计数 作用: 计算文件中出现每个单词的频数 输入结果 ...

  3. jquery实现点击改变背景色,点击其他恢复原来背景色,被点击的改变背景色

    实现这个功能很简单,可是之前自己不怎么熟悉jquery,感觉各种乱写.现在终于整理好了思路. html: <div class="managementPanel"> & ...

  4. 获取checkbox 的选中状态的id、checkbox的一些操作

    var id_array=new Array(); $('input[name="id"]:checked').each(function(){ id_array.push($(t ...

  5. uvalive 6888 Ricochet Robots bfs

    题目链接 给一个n*m的图, 图上有n个标号, n<=4, 然后有墙, 还有一个终点x. 每一步, 只能走某一个标号, 可以向四个方向走, 然后必须要碰到墙或者图的边界或者另一个标号才能停下来. ...

  6. python日志记录-logging模块

    1.logging模块日志级别 使用logging模块简单示例: >>>import logging >>>logging.debug("this's a ...

  7. verilog 随笔

    不是说你在代码里定义一个reg型变量,综合器就会综合处一个寄存器来,case必须在always块里,always里面的被赋值变量必须是reg型,这是语法的规定,只能遵守.写代码的时候不要加入触发器(不 ...

  8. stack的应用

    STL除了给我们提供了一些容器(container)以外,还给我们提供了几个容器适配器(container adapters),stack便是其中之一 看过STL源码的人都知道,stack其实是内部封 ...

  9. 2014第16周三CSS布局再学习摘录

    今天尝试写了下前端页面,费了不少时间,做出的结果仍然惨不忍睹,感觉很简单的几个页面,在现有框架多个样式混杂下就是感觉很不自在随意,晚上回来又看了些div+css方面的基础知识. 1.CSS的class ...

  10. LDA的一些资料

    LDA-math-汇总 LDA数学八卦 http://www.52nlp.cn/lda-math-%E6%B1%87%E6%80%BB-lda%E6%95%B0%E5%AD%A6%E5%85%AB%E ...