Linux 指令详解 top 系统资源检测

指令:top   持续的监测整个系统的程序工作状态

<1>.top是一个优秀的交互式工具,能够实时显示当前系统的进程的相关信息,包括PID、内存占用率、CPU占用率等,还可以根据需要按CPU占用情况排序、内存使用情况排序。

<2>.如果在前台执行该命令,它将一直显示前台,直到用户终止该程序

命令格式:

# top [-] [d] [p] [q] [c] [C] [S] [s] [n]

参数说明:

-b: 批处理模式。通常用在脚本中,不断输出信息
-c: 显示包含路径的命令行,而不只是程序名称
-d: 指定信息刷新的时间间隔(默认是5s)
-i: 不显示闲置或者僵死进程
-n: 指定显示的次数。一般与-b搭配使用
-p: 指定进程号。可以指定多个pid
-s: 使top命令在安全模式中运行
-S: 指定累积模式,每个进程的CPU时间为该进程及关闭的子进程锁累加的时间
-u: 指定用户名

top交互命令:

c: 显示完整的命令
d: 更改刷新频率
f: 增加或减少要显示的列(选中的会变成大写并加*号)
F: 选择排序的列
h: 显示帮助画面
H: 显示线程
i: 忽略闲置和僵死进程
k: 通过给予一个PID和一个signal来终止一个进程。(默认signal为15。在安全模式中此命令被屏蔽)
l:  显示平均负载以及启动时间(即显示影藏第一行)
m: 显示内存信息
M: 根据内存资源使用大小进行排序
N: 按PID由高到低排列
o: 改变列显示的顺序
O: 选择排序的列,与F完全相同
P: 根据CPU资源使用大小进行排序
q: 退出top命令
r: 修改进程的nice值(优先级)。优先级默认为10,正值使优先级降低,反之则提高的优先级
s: 设置刷新频率(默认单位为秒,如有小数则换算成ms)。默认值是5s,输入0值则系统将不断刷新
S: 累计模式(把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+ )
T: 根据进程使用CPU的累积时间排序
t: 显示进程和CPU状态信息(即显示影藏CPU行)
u: 指定用户进程
W: 将当前设置写入~/.toprc文件,下次启动自动调用toprc文件的设置
<: 向前翻页
>: 向后翻页
?: 显示帮助画面
1(数字1): 显示每个CPU的详细情况
<Space>:立即刷新

top输出解析

# top

top - 02:53:08 up 24 days, 18:47,  1 user,  load average: 0.02, 0.01, 0.00
Tasks:  84 total,   1 running,  83 sleeping,   0 stopped,   0 zombie
Cpu(s): 0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3922748k total,   813552k used,  3109196k free,   158292k buffers
Swap:  8191992k total,        0k used,  8191992k free,   505676k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1086 root      20   0 15004 1292 1004 R  0.3  0.1   0:00.11 top
    1 root      20   0 19232 1476 1188 S  0.0  0.0   0:00.67 init

第一行:

top - 02:53:08 up 24 days, 18:47,  1 user,  load average: 0.02, 0.01, 0.00

top:  表示为top的指令

02:53:08:  系统当前时间

up 24 days, 18:47:  系统开机到现在经过了多少时间

1 user:  当前连接用户数

load average: 0.02, 0.01, 0.00:系统1分钟、5分钟、15分钟的平均CPU负载信息

系统平均CPU负载:

<1>.load average数据每隔5秒检查一次活跃的进程数,然后按特定算法计算出的数值。

<2>.在多处理器系统中,CPU负载均值是基于内核的数量决定的。以 100% 负载计算,1.00 表示单个处理器,而 2.00 则说明有两个双处理器,同理 4.00 就说明主机具有四个处理器。反推对于双核处理器,值为2.00则表示100%负载。

<3>.一般,对于单个处理器这个值应该低于1,除非系统很忙碌。如果这个值高于5则表明系统超负荷运转。

<4>.有经验的系统管理员都会将这条线划在 0.70:

第二行:任务总览

Tasks:  84 total,   1 running,  83 sleeping,   0 stopped,   0 zombie

Tasks:  任务

84 total:  当前进程总数

1 running:  正在运行的进程数

83 sleeping:  睡眠进程数量

0 stopped:  停止的进程数

0 zombie:  僵死进程数

第三行:cpu状态  表示这一行显示CPU总体信息

Cpu(s): 0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu(s):  显示CPU的信息

us:  用户空间占用CPU百分比

sy:  内核空间占用CPU的百分比

ni:  用户进程空间中改变过优先级的进程占用CPU百分比

id:  空闲CPU百分比(反映一个系统cpu的闲忙程度)

wa:  等待输入输出(I/O)的CPU时间百分比

hi:  CPU处理硬件中断占用的时间

si:  CPU处理软件中断占用的时间

st:  显示虚拟机被hypervisor偷去的CPU时间(有虚拟cpu的情况)

注:当有多个CPU时,可能会超过两行,这个时候就需要使用数字键1来更改,如下

Cpu0  :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

第四行:物理内存使用

Mem:   3922748k total,   813552k used,  3109196k free,   158292k buffers

Men:  显示内存的信息

total:   表示物理内存总量(total = used + free)

used:    表示已经使用的物理内存总量

free:    表示空闲的物理内存(buffers和cached所占用的也被当作已使用)

buffers: 表示用作内核缓存的物理内存

第五行:虚拟内存使用(交换空间)

Swap:  8191992k total,        0k used,  8191992k free,   505676k cached

Swap: 交换空间

total: 表示交换空间总量

used:  表示使用的交换空间总量

free:  表示空闲的交换空间总量

cached: 表示缓冲交换空间总量

buffers和cached都是linux操作系统底层的机制,目的是为了加速对磁盘的访问。

其中buffers指的是块设备的读写缓冲区,cached指的是文件系统本身的页面缓存。

近似的计算内存总量公式:第四行的free + 第四行的buffers + 第五行的cached

第六行:空行

在top程序中输入指令的地方

第七行:每个进程使用的资源情况

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1086 root      20   0 15004 1292 1004 R  0.3  0.1   0:00.11 top
    1 root      20   0 19232 1476 1188 S  0.0  0.0   0:00.67 init
PID:  进程的ID(进程的唯一标识符)
USER: 该进程所属用户
PR:   进程调度的优先级(值越小越优先被执行,RT表示正在运行中)
NI:   进程的nice值。(范围-20到19,值越小越优先被执行)
VIRT: 进程使用的虚拟内存总量(单位kb,VIRT=SWAP+RES)
RES:  进程占用的物理内存。(单位kb。RES=CODE+DATA。%MEM 所显示的是由此列的值)
SHR:  进程使用的共享内存。(单位kb)
S:    进程的状态。主要有以下几种:
    D.不可中断的休眠
    S.休眠
    R.正在运行
    T.被跟踪或已停止
    Z.僵死状态(僵尸进程)
%CPU: 进程占用的CPU百分比
%MEM: 进程占用的物理内存的百分比(以RES列的值为标准)
TIME+:进程启动后占用的总的CPU时间。(单位1/100秒)
COMMAND: 进程启动命令名称

还有其他默认中不显示的输出,所有的显示如下

a   PID     进程id
b   PPID    父进程id
c   RUSER   Real user name
d   UID     进程所有者的用户id
e   USER    进程所有者的用户名
f   GROUP   进程所有者的组名
g   TTY     启动进程的终端名。
h   PR      优先级
i   NI      nice值。负值表示高优先级,正值表示低优先级
j   P       最后使用的CPU,仅在多CPU环境下有意义
k   %CPU    上次更新到现在的CPU时间占用百分比
l   TIME    进程使用的CPU时间总计,单位秒
m   TIME+   进程使用的CPU时间总计,单位1/100秒
n   %MEM    进程使用的物理内存百分比
o   VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p   SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。 SWAP = VIRT - RES
q   RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA(应用程序真的使用的内存)
r   CODE    可执行代码占用的物理内存大小,单位kb
s   DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t   SHR     共享内存大小,单位kb
u   nFLT    进程启动以来页面错误的次数(这个值过高意味着进程从磁盘读取大量资源)
v   nDRT    最后一次写入到现在被修改过的页面数。(通常小于10或者为0)
w   S       进程状态
        D.不可中断的休眠
        S.休眠
        R.正在运行
        T.被跟踪或已停止
        Z.僵死状态(僵尸进程)
x   COMMAND 命令名/命令行
y   WCHAN   若该进程在睡眠,则显示睡眠中的系统函数名
z   Flags   任务标志,参考 sched.h

注:

<1>.在默认中,是按“%CPU”排序的

<2>.shift + >或shift + <可以向右或左改变排序列

<3>.何时刷新时间需要快于1s:时间段内需要更多的样本

-------------------------------

参数实例

1、默认输出:

# top

2、指定输出次数(-n)

更新5次后退出

# top -n 5

3、批处理模式(-b)

使用批处理模式可以在文件中保存输出

# top -b

4、2与3结合:

将top的信息处理5次,然后将结果输出到dodo.txt文件

# top -b -n 5 > /doiido/dodo.txt

5、指定进程(-p)

PID为0表示为top命令自身的PID

5.1:监控PID为3345的进程

# top -p 3345

5.2:监控PID为3345和PID为7634的进程

# top -p 3345 -p 7634

6、指定刷新时间(-d)(以秒计)

设置信息刷新时间为5s(一般设置为1到3秒的间隔)

# top -d 5

7、显示完整命令(-c)

# top -c

8、以累积模式显示信息(-S)

# top -S

9、指定用户名(-u,-U)

可以指定显示的用户或者UID

9.1、只显示用户为doiido的进程

# top -U doiido

9.2、只显示UID为600的进程

# top -u 600

注:-p、-u和-U选项同时只可以使用一个

10、只显示空闲进程(-i)

# top -i

-------------------------------

交互命令实例

1、帮助:  h或者?

2、立即刷新:  <ENTER> 或者 <SPACE>

3、设置更新刷新间隔:  ‘d‘ 或 ‘s‘

按下‘d‘或‘s‘时会提示输入一个值(以秒为单位),然后将会以这个值作为刷新间隔

4、字段管理:  f

按下f后可以选择想要显示的字段。(*标记表示已选择的)

5、反向排序:  R

按下R切换反向和常规排序

6、显示命令:  c

按下c切换完整路径和程序名

7、空闲任务:  i

切换显示空闲任务

8、指定用户:  u

按下u会提示输入用户名,然后就会显示特定用户的进程(空白将会显示全部用户)

9、粗体显示:  B

按下B切换重要信息粗体显示

10、设置最大显示任务数:  ‘n‘ 或 ‘#‘

按下n或者#后会提示输入数字,该数字即为最大显示的任务数量

11、终止的进程:  k

按下k之后会提示输入一个PID,然后输入PID之后会提示输入给该进程什么信号

注:一般终止进程使用15信号,如不能正常结束则使用信号9

12、切换高亮信息:  ‘x‘ 或者 ‘y‘

x:将排序字段高亮显示(纵列)

y:将运行进程高亮显示(横行)

13、重新设置优先级:  r

重新设置一个任务的优先级(用法和k一样)

14、切换负载、任务、内存信息的显示:   ‘l‘ ‘t‘ ‘m‘

默认如下:

top - 09:32:20 up 26 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  72 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.5%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1914492k total,   148084k used,  1766408k free,     7460k buffers
Swap:  2047992k total,        0k used,  2047992k free,    37928k cached

l:切换显示第二行

Tasks:  72 total,   1 running,  71 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,  0.0%st
Mem:   1914492k total,   148084k used,  1766408k free,     7452k buffers
Swap:  2047992k total,        0k used,  2047992k free,    37928k cached

t:切换显示第三行

top - 09:32:46 up 26 min,  1 user,  load average: 0.00, 0.00, 0.00
Mem:   1914492k total,   148084k used,  1766408k free,     7460k buffers
Swap:  2047992k total,        0k used,  2047992k free,    37928k cached

m:切换显示Mem和Swap

top - 09:33:32 up 27 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  72 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.5%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

15、切换全屏和交替模式间:  A

交替模式按下A会显示4个窗口,分别为如下四个字段:

Def:默认字段组(默认只显示这个组)

Job:任务字段组

Mem:内存字段组

Usr:用户字段组

在这个模式下,按a或w可以切换,切换之后按-可以隐藏

:Def - 09:23:09 up 17 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  72 total,   1 running,  71 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,  0.0%st
Mem:   1914492k total,   147960k used,  1766532k free,     7380k buffers
Swap:  2047992k total,        0k used,  2047992k free,    37928k cached

1  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
     1 root      20   0 19232 1516 1228 S  0.0  0.1   0:01.08 init
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
2  PID  PPID    TIME+  %CPU %MEM  PR  NI S  VIRT SWAP  RES  UID COMMAND
  1086  1073   0:01.70  0.0  0.1  20   0 R 15004    0 1296    0 top
  1073  1069   0:00.03  0.0  0.1  20   0 S  105m    0 1844    0 bash
3  PID %MEM  VIRT SWAP  RES CODE DATA  SHR nFLT nDRT S  PR  NI %CPU COMMAND
  1069  0.2 98.0m    0 4028  520  800 3048    5    0 S  20   0  0.0 sshd
  1034  0.2 81520    0 3424  288  704 2544    2    0 S  20   0  0.0 qmgr
4  PID  PPID  UID USER     RUSER    TTY         TIME+  %CPU %MEM S COMMAND
  1069   949    0 root     root     ?          0:00.94  0.0  0.2 S sshd
  1025     1    0 root     root     ?          0:00.01  0.0  0.2 S master  

------------------------特定应用------------------

1:通过shell脚本监控

在shell脚本中添加如下行

top -b -n 2 | grep -E "java| apache2" >> /doiido/logs

2:监视特定进程

将需要监视的进程命令行特征保存到KEYS中即可

#!/bin/sh
KEYS='agent|omc4j|terminal|module'

pslist()
{
    ps -ef | egrep $KEYS | grep -v grep
}

readpid()
{
    while read user pid dummy;
    do
        echo -n " -p $pid"
    done
}

top `pslist | readpid`

3、与at或cron结合,在特定时间对资源使用状态进行快照

# vi test.at

TERM=linux top -b -n 1 > /doiido/dodo.txt

# at -f ./test.at now+1minutes

TERM:Top运行时需要此变量,但“at”在定时调用时并不会保留

4、查看运行时间

# time top -b -n 1

real    0m0.665s
user    0m0.010s
sys     0m0.108s

real:Top工作需要的总时间

时间: 2024-10-09 22:04:15

Linux 指令详解 top 系统资源检测的相关文章

Linux指令详解useradd groupadd passwd chpasswd chage 密码修改

创建用户.设置密码.修改用户.删除用户: useradd testuser 创建用户testuser passwd testuser 给创建的用户testuser设置密码 说明:新创建的用户会在/home下创建一个用户目录testuser usermod --help 修改用户这个命令的相关参数 userdel testuser 删除用户testuser rm -rf testuser 删除用户testuser所在目录 上面的几个命令只有root账号才可以使用,如果你不知道自己的系统上面的命令在

Linux 指令详解 df 检查文件系统的磁盘空间使用情况

指令:df 检查文件系统的磁盘空间使用情况 可以查看所有已挂载磁盘的总容量.使用空间.剩余空间.挂载位置等 语法:# df [OPTION] [FILE] FILE是一个或多个路径名的可选列表,如选择这项则显示文件所在的文件系统的磁盘使用情况 Ps: 1:所有用户均有使用df命令的权限 2:默认情况下以1KB为单位显示磁盘空间 3:默认显示当前所有被挂载的文件系统的可用空间 4:超级权限用户使用df命令时会发现某个分区的容量会超过100%,原因如下: Linux系统为超级用户保留了10%的空间.

Linux 指令详解 vi 交互式文本编辑器

vi是'Visual interface'的简称,是Linux下标配的一个纯字符界面的交互式文本编辑器.可以执行输出.删除.查找.替换.块操作等众多文本操作,用户还可以根据自己的需要对其进行定制.其所有操作都需要通过键盘指令来完成,如果可以熟练应用,将会是十分的方便 -------------------------------------------------------------------- 工作模式: vi有三种工作模式,Command mode,Insert mode,Last l

Linux 指令详解 curl 文件传输

指令:curl 在linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. 工作原理:curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页.网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题. 语法:# curl [option] [ur

Linux 指令详解 scp 在linux主机间传输文件

指令:scp 在不同的linux主机间复制文件 带有Security的文件copy,基于ssh登录. 有些linux发行版没有自带scp,因此需要安装scp #  yum -y install openssh-clients 基本语法: # scp [参数] source target 常见参数 -v : 显示进度,可以用来查看连接.认证或是配置错误 -r :  赋值目录 -C :使能压缩选项 -P :选择端口 -4 : 强行使用 IPV4 地址 -6 : 强行使用 IPV6 地址 常见的使用方

Linux 指令详解 find 查找搜索

指令:find 查找 ,搜索 具有即时性的特点,不需要数据库,相对会比较慢一些 1.从指定路径下递归向下搜索文件 2.支持按照各种条件方式搜索 3.支持对搜索得到的文件进一步用指令 语法: #  find [路径] [参数] [表达式] 常用参数 -user 可以根据文件拥有者来查找文件 # find /root -user root 在root目录下查找拥有者是root的文件 -group 根据文件的所属组查找文件 # find /root -group root 在/root文件夹下查找所属

Linux 指令详解 pushd 快速切换目录

指令:pushd 在不同目录间切换 在命令行模式中,当需要在不同目录中不停的切换时会发现不停的输入目录很麻烦,这个时候就需要用上pushd函数了 pushd工作原理: pushd将指定目录压入当前shell维护的目录栈,从而可以实现多个不同路径之间的切换. Ps:默认情况下,pushd函数可能不包括在你的Linux中,但存在于red Hat和用Red Hat驱动的系统中. 语法: # pushd [-n] [+N | -N | dir] 参数: -n: 只将目录加入到目录栈中,不切换目录 +N:

Linux 指令详解 chpasswd 批量修改用户密码

命令:chpasswd 批量修改用户密码 工作原理: 从系统的标准输入读入用户的名称和口令,并利用这些信息来更新系统上已存在的用户的口令 语法: 1:# echo 用户名:密码 | chpasswd 2:# chpasswd < doiido.txt 参数: -e :如果使用了-e选项,口令将只能以加密的方式传递 如果未使用-e选项,口令将按明文的形式传递 注意事项 1:用户名必须是系统上已存在的用户 2:普通用户没有使用这个指令的权限 3:如果输入文件是按非加密方式传递的话,请对该文件进行适当

Linux 指令详解 at 定时执行任务

指令:at 指定一个时间执行一个任务,只能执行一次 语法:# at [参数] [时间] at> 执行的指令 退出at命令 ctrl+d 命令前提: 需要开启atd进程(在redhat中atd是默认随系统启动而启动) 测试中发现在centos6.5 mini版中没有自带at服务,因此需要自己通过下载 # yum -y install at ##查看是否开启atd # ps -ef | grep atd ##开启atd # /etc/init.d/atd start ##设置atd开机启动 # ch