性能数据的监控,除了针对整机进行外,还要求我们对某一运行的程序单独进行。常用的程序监控命令有ps和top。

Ps

ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以假如需要检测其情况,便能够使用ps命令了。
ps是用来报告程序执行状况的指令,可以搭配kill指令随时中断,删除不必要的程序。

使用方式: ps [options] [--help]

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义。

参数 说明
-A 列出所有的程序
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
-e 显示任何进程(此参数的效果和指定"A"参数相同)
-f 全格式(显示UID,PPIP,C与STIME栏位)
-C 指定执行指令的名称,并列出该指令的程序的状况

au(x)参数的输出格式:

参数 说明
USER 行程拥有者
PID pid
%CPU 占用的 CPU 使用率
%MEM 占用的内存使用率
VSZ 占用的虚拟内存大小
RSS 占用的物理内存大小
TTY 终端的次要装置号码 (minor device number of tty)
STAT 该进程的状态:
D: 不可中断的静止 (I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统)
START 行程开始时间
TIME 执行的时间
COMMAND 所执行的指令

范例1

[work@jx-testing-ps1933.jx.baidu.com ~]$ ps
  PID TTY          TIME CMD
24321 pts/0    00:00:00 bash
24414 pts/0    00:00:00 ps

能够看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程的命令行输入)。

范例2

使用带有-ef 选项的ps,返回系统中所有用户的所有进程的完整列表。一般将此ps命令的结果传送到 grep 中,则该结果更易于查看。例如:

[work@jx-testing-ps1933.jx.baidu.com ~]$ ps -ef | grep work
root     24316  2544  0 09:52 ?        00:00:00 sshd: work [priv]
work     24320 24316  0 09:52 ?        00:00:00 sshd: work@pts/0 
work     24321 24320  0 09:52 pts/0    00:00:00 -bash
work     24416 24321  0 10:44 pts/0    00:00:00 ps -ef
work     24417 24321  0 10:44 pts/0    00:00:00 grep work

使用PS命令分析系统性能的方法主要有:
1)首先,根据用户ID寻找由同一用户执行的许多相似任务,这些任务很可能是因为用户运行的某个脚本程序在后台启动多个进程而造成的。
2)接下来,检查TIME域中各进程累计占用CPU的时间,如果有某个进程累计占用了大量的CPU时间,通常说明该进程可能陷入了无限循环,或该进程的某些逻辑出了错
3)找到那些已陷入死锁的进程ID后,就可以使用kill命令强制终止该进程了。

Top

top命令和ps命令的基本作用是相同的,显示系统当前的进程和其它状况;但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用、执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

top命令语法: top [-] [d delay] [q] [c] [S] [s] [i] [n]

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

top命令的显示

[work@jx-testing-ps1933.jx.baidu.com ~]$ top
top - 10:53:56 up 223 days, 16:04,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  57 total,   1 running,  56 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   8161244k total,  6548780k used,  1612464k free,    30500k buffers
Swap:        0k total,        0k used,        0k free,  6419912k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                         
    1 root      16   0  4752  544  452 S  0.0  0.0   0:01.88 init                                                            
    2 root      RT   0     0    0    0 S  0.0  0.0   0:22.27 migration/0                                                     
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.19 ksoftirqd/0                                                     
    4 root      RT   0     0    0    0 S  0.0  0.0   0:20.52 migration/1                                                     
    5 root      34  19     0    0    0 S  0.0  0.0   0:00.22 ksoftirqd/1                                                     
    6 root      RT   0     0    0    0 S  0.0  0.0   0:18.87 migration/2                                                     
    7 root      34  19     0    0    0 S  0.0  0.0   0:00.25 ksoftirqd/2                                                     
    8 root      RT   0     0    0    0 S  0.0  0.0   0:12.73 migration/3                                                     
    9 root      34  19     0    0    0 S  0.0  0.0   0:00.23 ksoftirqd/3                                                     
   10 root       5 -10     0    0    0 S  0.0  0.0   0:00.04 events/0                                                        
   11 root       5 -10     0    0    0 S  0.0  0.0   0:00.03 events/1                                                        
   12 root       5 -10     0    0    0 S  0.0  0.0   0:39.59 events/2                                                        
   13 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 events/3                                                        
   14 root       5 -10     0    0    0 S  0.0  0.0   0:00.33 khelper                                                         
   15 root      15 -10     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                          
   71 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/0                                                       
   72 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/1                                                       
   73 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/2  

第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。
第二行显示的是所有启动的进程、目前运行的、挂起 (Sleeping)的和无用(Zombie)的进程。
第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。
第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。
第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。
第六行显示的项目最多,下面列出了详细解释。

参数 说明
PID(Process ID) 进程标示号
USER 进程所有者的用户名
PR 进程的优先级别
NI 进程的优先级别数值
VIRT 进程占用的虚拟内存值
RES 进程占用的物理内存值
SHR 进程使用的共享内存值
S 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
%CPU 该进程占用的CPU使用率
%MEM 该进程占用的物理内存和总内存的百分比
TIME+ 该进程启动后占用的总的CPU时间
Command 进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

命令 说明
空格 立刻刷新
P 根据CPU使用大小进行排序
T 根据时间、累计时间排序
q 退出top命令
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据使用内存大小进行排序
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法
Ctrl+L 擦除并且重写屏幕
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽
i 忽略闲置和僵死进程。这是一个开关式命令
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10
S 切换到累计模式
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息

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

使用top命令也可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面。

Linux性能监控(程序篇)的更多相关文章

  1. Linux性能监控

    转自:http://blog.csdn.net/chosen0ne/article/details/8200737 linux性能监控,就是要监控系统的各个子系统是否正常.linux主要的子系统包括: ...

  2. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  3. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

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

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

  5. Linux性能监控与分析之--- CPU

    Linux性能监控与分析之--- CPU 望月成三人关注 2016.07.25 18:16:12字数 1,576阅读 2,837 CPU性能指标 用户进程使用CPU的比率 系统进程使用CPU的比率 W ...

  6. JVM-Java程序性能监控-初级篇

    前篇 - 小伙们都知道,java程序的性能监控主要是针对jvm中heap的监控~ 那么在做压力测试时如何对heap.线程等一系列的指标进行的监控的呢? 首先-你若不懂命令,那么就需要了解一套Java程 ...

  7. linux ---性能监控(工具)

    linux服务器性能监控-nmon Nmon 是一个分析aix和linux性能的免费工具,出自IBM,其采集的数据通过nmon_analyser生成报表 一.下载 官网下载地址 百度网盘 二.运行和使 ...

  8. Linux 性能监控的18个命令行工具

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我 ...

  9. linux性能监控分析及通过nmon_analyse生成分析报表

    nmon是一款分析 AIX 和 Linux 性能的免费工具 nmon 工具还可以将相同的数据捕获到一个文本文件,便于以后对报告进行分析和绘制图形.输出文件采用电子表格的格式 (.csv). 性能介绍 ...

  10. 【转载,整理】Linux性能监控

    一. 比较全的linux性能检测网站 1. 很好的网站,原文:http://os.51cto.com/art/201402/430050.htm 监测 cpu.内存.网络.IO等命令及工具   2.  ...

随机推荐

  1. Android OpenGL教程-第六课【转】

    第六课 纹理映射: 在这一课里,我将教会你如何把纹理映射到立方体的六个面. 激动的时刻来了,加载图片了. 复习一下android加载图片的知识.放一个png到drawable里面. (图片文件名:ne ...

  2. 利用OC对象的消息重定向forwardingTargetForSelector方法构建高扩展性的滤镜功能

    在OC中,当像一个对象发送消息,而对象找到消息后,从它的类方法列表,父类方法列表,一直找到根类方法列表都没有找到与这个选择子对应的函数指针.那么这个对象就会触发消息转发机制. OC对象的继承链和isa ...

  3. flask框架的学习

    ---恢复内容开始--- 第一个flask程序讲解:1. 第一次创建项目的时候,要添加flask的虚拟环境.添加虚拟环境的时候,一定要选择到python这个执行文件.比如你的flask的虚拟环境的目录 ...

  4. Spring发送基于freemarker模板的邮件

    在项目开发过程中,我们经常会遇到需要发送邮件的场景,比如:用户验证邮箱的时候,有活动通知或者提醒通知的时候……有些时候我们可能只需要发送一些简单文本内容即可,但是大多数情况下我们更希望邮件的内容是丰富 ...

  5. C# 程序执行时间差

    有时需要知道执行一个方法需要多少时间,这时会用到一个时间差TimeSpan DateTime startTime = DateTime.Now;//方法开始时间 //{ // 你需要测试的代码. // ...

  6. Java中HashSet的解读

    一. HashSet源代码 HashSet 的实现   对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的 ...

  7. 5、static、final、匿名对象、内部类、包、修饰符、代码块

    final关键字 final关键字概念 * A: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写. ...

  8. H5演示文稿快速制作

    详见: http://www.geekfan.net/8107/ 或 http://www.jianshu.com/p/09a3bbb8b362

  9. Git建立独立分支

    前言 在码云建立git项目后默认分支是master, 这里如果直接在码云新建分支, 会指定默认分支; 所以通过git 命令git checkout --orphan 新分支名 创建独立分支 创建 创建 ...

  10. 撩课-Mysql详解第3部分sql分类

    学习地址:[撩课-JavaWeb系列1之基础语法-前端基础][撩课-JavaWeb系列2之XML][撩课-JavaWeb系列3之MySQL][撩课-JavaWeb系列4之JDBC][撩课-JavaWe ...