首页 >> 学习 >> Linux常用命令 >> top
top命令

本节重要性:★★★★☆    本节难度:★★☆☆☆

在Windows下面,我们有资源管理器可以查看CPU、内存等的使用情况及软件和进程信息。Linux下也有一个类似的工具,那就是top命令。top命令可以动态显示系统资源使用情况及进程信息。

命令用途

动态显示Linux系统任务

命令格式

top [option]

常用选项

-d	指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
-p	通过指定监控进程ID来仅仅监控某个进程的状态。
-q	该选项将使top没有任何延迟的进行刷新。如果是root用户,top将以尽可能高的优先级运行。
-S	指定累计模式
-s	使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
-i	使top不显示任何闲置或者僵尸进程。
-c	显示整个命令行(默认只显示命令名)

常见用法

top命令使用比较简单,但显示的信息比较丰富。下面是top命令不使用选项时的输出:

[peter@ibi98 user]$ top
top - 09:43:59 up 425 days, 23:48,  3 users,  load average: 0.01, 0.06, 0.19
Tasks: 264 total,   1 running, 258 sleeping,   5 stopped,   0 zombie
Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.4%id,  0.0%wa,  0.1%hi,  0.2%si,  0.0%st
Mem:  32947484k total, 32722596k used,   224888k free,   288824k buffers
Swap: 35061756k total,   313596k used, 34748160k free, 30339920k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
16280 peter     20   0 15392 1332  896 R  0.7  0.0   0:00.07 top
  112 root      20   0     0    0    0 S  0.3  0.0 261:43.73 kswapd0
    1 root      20   0 38412 2900 1056 S  0.0  0.0   4:25.45 systemd
    2 root      20   0     0    0    0 S  0.0  0.0   0:03.73 kthreadd
    3 root      20   0     0    0    0 S  0.0  0.0   1:13.54 ksoftirqd/0

第1行是任务负载信息:

top - 09:43:59 up 425 days, 23:48,  3 users,  load average: 0.01, 0.06, 0.19

09:43:59			系统当前时间
up 425 days, 23:48		系统连续运行时间
3 users				当前登录用户数量
load average: 0.01, 0.06, 0.19	系统负载(三个数字分别是1、5、15分钟的任务队列平均长度)

第2行是进程信息:

Tasks: 264 total,   1 running, 258 sleeping,   5 stopped,   0 zombie

264 total	启动的进程总数
1 running	正在运行的进程数
258 sleeping	挂起的进程数
5 stopped	停止的进程数
0 zombie	僵尸进程数

第3行是CPU使用情况:

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

0.0%us	用户态占用的CPU百分比
0.2%sy	内核态占用的CPU百分比
0.0%ni	改变过优先级的进程占用的CPU百分比
99.4%id	CPU空闲占比
0.0%wa	CPU等待io的时间占比
0.1%hi	硬中断占用的CPU百分比
0.2%si	软中断占用的CPU百分比
0.0%st	虚拟机占用的CPU百分比

第4行是内存使用情况:

Mem:  32947484k total, 32722596k used,   224888k free,   288824k buffers

32947484k total	内存总量
32722596k used	内存已使用量
224888k free	内存剩余量
288824k buffers	用作内核缓存的内存量

第5行是交换分区使用情况:

Swap: 35061756k total,   313596k used, 34748160k free, 30339920k cached

35061756k total		交换分区总量
313596k used		交换分区已使用量
34748160k free		交换分区剩余量
30339920k cached	缓冲的交换分区总量

第7行往后是进程信息:

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

PID	进程ID
USER	进程所有者
PR	优先级。优先级的修正值=初始值+NI,值越小进程的优先级越高
NI	Nice值,即用来修正进程可被执行的优先级的数值,范围从-20到+19(不同系统范围不一样),
	正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。
	具有最高优先级的程序,其Nice值最低,所以在Linux系统中,值-20意味着一项任务非常重要;
	相反,如果任务的Nice为+19,则表示它是一个高尚无私的任务,允许所有其他任务比自己
	优先享有更多份额的CPU时间(这也就是Nice的名称的来意)。
VIRT	进程使用的交换分区(虚拟内存)总量
RES	进程使用的、未被换出的物理内存大小
SHR	共享内存大小
S	进程状态(R:可执行状态;S:可中断的睡眠态;D:不可中断的睡眠态)
%CPU	上次更新到现在的CPU时间占用百分比
%MEME	进程使用的物理内存百分比
TIME+	进程使用CPU总时间(单位1/100秒)
COMMAND	命令名

下面的信息可按f键后添加:
PPID       父进程ID
RUSER      Real user name(相关概念还有effective user name和saved set-user name,
           如想深入了解请查阅网上资料)
UID        用户ID
GROUP      用户组
TTY        启动进程的终端名
P          最后使用的CPU(仅多个CPU情况)
SWAP       进程使用的虚拟内存中被换出的大小 (单位kb)
TIME       进程使用CPU总时间(单位1/100秒)
CODE       可执行代码占用内存大小 (单位kb)
DATA       可执行代码以外的部分(数据段+栈)占用的物理内存大小(单位kb)
nFLT       页面错误次数
nDRT       最后一次写入到现在,被修改过的页面数
WCHAN      若该进程在睡眠,则显示睡眠中的系统函数名
Flags      任务标志,参考

top有一些交互命令可以控制信息显示方式:

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

top提供的信息很丰富,需要花一定的时间才能熟悉这些信息的意义。

<<上一节  下一节>>