从零开始学shell之top命令

shell Nov 15, 2019

前言

top命令,就像是windows的任务管理器。为我们在

交互命令

交互命令是在top命令启动后的一些方便查看的指令。

参数 说明
c 显示整个命令行而不是命令名
M 以内存占有率大小的顺序排列进程列表
P 以cpu占有率大小的顺序排列进程列表
u 输入用户名,只会显示输入用户的进程
n 输入数字,最多只显示输入数字的进程
v 以树形结构展示进程
N 以pid大小排序
R 逆序当前的排列规则
H 线程模式
f 进入编辑模式,可以选择想要展示的列和排序的列。上下在各列之间移动,右选择,enter确认。d确认展示数据,再次点击取消。s选择排序的列。

启动命令

启动命令是在top命令启动时候的输入的命令。

参数 说明
-p pid 只显示特定pid进程的数据

内存各列的含义

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、真正的该程序要求的数据空间,是真正在运行中要使用的。

进程状态的含义

Runnable (R)

进程在CPU执行状态中或者在运行队列中,马上要被执行

Interruptible sleep (S)

进程在等待某个事件完成

Uninterruptible sleep (D)

进程在等待I/O操作完成

Stopped (T)

进程被job control signal信号停止或者处于debug模式中stop状态中。

Zombie (Z)

已经停止的进程,但是他的数据还被其他进程引用着,这样的进程就叫做僵尸进程。

进程状态总结

进程在D(Uninterruptible sleep)和 S(Interruptible sleep)状态显示的是sleeping状态。T(Stopped)状态现实的是stopped。在最上面zombie标示旁边显示总的zombie进程数量。

NI和PR

NI表示nice value是用户空间的概念。PR是Priority是进程在LInux内核中实际优先级。

总结

top命令可以说是Linux操作系统的任务管理器了。一旦遇到问题首先就是通过top命令查看系统的状态,出了基础的top命令外,还有很多专有top(iotop,iftop等)。