top命令使用¶
top 动态、交互式进程管理器
使用格式:
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明:
d: 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之
p: 通过指定监控进程ID来仅仅监控某个进程的状态
q: 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行
S: 指定累计模式
s: 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
i: 使top不显示任何闲置或者僵死进程
c: 显示整个命令行而不只是显示命令名
交互参数(常用):
l: 切换显示平均负载和启动时间信息
m: 切换显示内存信息
t: 切换显示进程和CPU状态信息
c: 切换显示命令名称和完整命令行
M: 根据驻留内存大小进行排序
P: 根据CPU使用百分比大小进行排序
1: 显示多cpu的情况
交互参数(一般):
h: 显示帮助画面,给出一些简短的命令总结说明
k: 终止一个进程.系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号.
一般的终止进程可以使用15信号;如果不能正常结束那就使用信号?强制结束该进程.
默认值是信号15.在安全模式中此命令被屏蔽
i: 忽略闲置和僵死进程.这是一个开关式命令
q: 退出程序
r: 重新安排一个进程的优先级别.系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值.
输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权.默认值是10
S: 切换到累计模式
s: 改变两次刷新之间的延迟时间.提示输入新的时间,单位为s.输入0将不断刷新,默认是5s
f/F: 从当前显示中添加或者删除项目
o/O: 改变显示项目的顺序
T: 根据时间/累计时间进行排序
W: 将当前设置写入 ``~/.toprc`` 文件中.这是写top配置文件的推荐方法
使用实例及解析:
top - 18:08:26 up 11 days, 3:11, 9 users, load average: 0.63, 0.70, 0.64
Tasks: 249 total, 1 running, 248 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.5%us, 15.5%sy, 2.3%ni, 80.6%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 3952136k total, 3789956k used, 162180k free, 51736k buffers
Swap: 9936888k total, 1190692k used, 8746196k free, 730836k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11111 gordon 20 0 1514m 839m 806m S 39 21.7 3995:23 VirtualBox
1382 root 20 0 222m 38m 9468 S 3 1.0 247:22.90 Xorg
9384 gordon 20 0 807m 165m 25m S 1 4.3 317:51.95 chrome
前五行是系统整体的统计信息,第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
18:08:26 当前运行时间
up 11 days, 3:11 系统运行时间,格式: 天 时:分
9 users, 当前登陆用户数
load average: 0.63, 0.70, 0.64 系统负载,即任务队列的平均长度,三个数值分别为1,5,15分钟前到现在的平均值
第二行为进程和CPU的信息:
Tasks: 249 total 进程总数
1 running 正在运行的进程数
248 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
第三行为CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Cpu(s):
1.5%us 用户空间占用CPU百分比
15.5%sy 内核空间占用CPU百分比
2.3%ni 用户进程空间内改变过优先级的进程占用CPU百分比
80.6%id 空闲CPU百分比
0.0%wa 等待输入输出的CPU时间百分比
0.0%hi
0.2%si
0.0%st
第四行为内存信息,内容如下:
Mem: 3952136k total 物理内存总量
3789956k used 使用的物理内存总量
162180k free 空闲内存总量
51736k buffers 用作内核缓存的内存量
最后一行为交換区信息:
Swap: 9936888k total 交换区总量
1190692k used 使用的交换区总量
8746196k free 空闲交换区总量
730836k cached 缓冲的交换区总量(内存中的内容被换出到交换区,而后又被换入到内存,
但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小.
相应的内存再次被换出时可不必再对交换区写入)
进程信息区说明:
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)
Q *RES 进程使用的、未被换出的物理内存大小(单位kb)[RES=CODE+DATA]
R CODE 可执行代码占用的物理内存大小(单位kb)
S DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小(单位kb)
T *SHR 共享内存大小(单位kb)
U nFLT 页面错误次数
V nDRT 最后一次写入到现在,被修改过的页面数
W *S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
X *COMMAND 命令名/命令行
Y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Z Flags 任务标志,参考 sched.h
更改显示内容的交互操作:
f 键可以选择显示的内容(有*的为显示, 无的为不显示)[回车返回]
o 键改变列的显示顺序(大写列向左移,小写列向右移)[回车返回]
F/O 选择某一列,按照此列进行排序[回车返回]
R 可以将当前的排序倒转
常用命令:
top -u <user> # linux
top -U <user> # mac
最常用的说明:
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。
实例:
// 查看进程下的所有线程cpu利用率
top -H -p 25120