我不会接受我不要的未来
哪怕是命中注定

linux top命令详解

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

下面一行一行解释:

统计信息区:

第一行:任务队列信息,和uptime执行结果一样

分别显示了系统运行时间,登录用户书,5,10,15分钟的系统负载

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下: 
Tasks:

total   进程总数 
running   正在运行的进程数 
sleeping   睡眠的进程数 
stopped   停止的进程数 
zombie   僵尸进程数 

Cpu(s): 

us   用户空间占用CPU百分比 
sy   内核空间占用CPU百分比 
ni   用户进程空间内改变过优先级的进程占用CPU百分比 
id   空闲CPU百分比 
wa   等待输入输出的CPU时间百分比 
hi   硬中断(Hardware IRQ)占用CPU的百分比
si   软中断(Software Interrupts)占用CPU的百分比

st   (Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。

Mem: 

total   物理内存总量 
used   使用的物理内存总量 
free   空闲内存总量 
buffers   用作内核缓存的内存量 


Swap: 

total   交换区总量 
used   使用的交换区总量 
free   空闲交换区总量 
cached   缓冲的交换区总量。 
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 
该数值即为这些内容已存在于内存中的交换区的大小。 
相应的内存再次被换出时可不必再对交换区写入。 

进程信息区 :

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。 
序号 列名 含义 
PID 进程id 
PPID 父进程id 
RUSER Real user name 
UID 进程所有者的用户id 
USER 进程所有者的用户名 
GROUP 进程所有者的组名 
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ? 
PR 优先级 
NI nice值。负值表示高优先级,正值表示低优先级 
P 最后使用的CPU,仅在多CPU环境下有意义 
%CPU 上次更新到现在的CPU时间占用百分比 
TIME 进程使用的CPU时间总计,单位秒 
TIME+ 进程使用的CPU时间总计,单位1/100秒 
%MEM 进程使用的物理内存百分比 
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量  
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。 
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA 

1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
CODE 可执行代码占用的物理内存大小,单位kb 
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb 

1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的
SHR 共享内存大小,单位kb

1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来

 
nFLT 页面错误次数 
nDRT 最后一次写入到现在,被修改过的页面数。 
S 进程状态。 
D=不可中断的睡眠状态 
R=运行 
S=睡眠 
T=跟踪/停止 
Z=僵尸进程 
COMMAND 命令名/命令行 
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 
Flags 任务标志,参考 sched.h 
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下:
s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top

命令说明:

-d 后接秒数,指定每两次屏幕信息刷新之间的时间间隔,表示进程界面更新时间(默认为5秒)。

   当然用户可以使用s交互命令来改变之。 
-b,-n搭配,批次执行top  ——> top -b -n 2 > /tmp/top.txt #将top进程表在/tmp/top.txt中打印2次。

-p 通过指定监控进程ID来仅仅监控某个进程的状态。 ——> top -p 1 #查看进程号为1的进程。
-q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 
-S 指定累计模式 
-s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 
-i 使top不显示任何闲置或者僵死进程。 
-c 显示整个命令行而不只是显示命令名 

Linux下命令TOP中的常用交互命令

各使用场景:
a. 2500毫秒刷新一次TOP内容,总共5次,输出内容存放到performace.txt文件中
# top -b -d 2.5 -n 5 > performace.txt
注:要将内容输出到文件中,必须使用-b,表示批处理选项

b. TOP命令如何快速按%CPU、%MEM、TIME+列排序
    a). %CPU:使用大写字母按键:P
    b). %MEM:使用大写字母按键:M
    c). TIME+:使用大写字母按键: T
注:TOP默认排序为倒序,如果确实需要升序排序,可以使用大写字母按键:R
c. TOP命令中显示其它列值、将两列互换等
    a). 选择显示列或隐藏列:使用小写字母按键:f
    c). 交换列显示顺序:使用小写字母按键: o
    b). 选择需要排序的列:使用大写字母按键:F

赞(0)
未经允许不得转载:技术搬运工 » linux top命令详解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我们不生产技术 我们只是技术的搬运工