top命令详解

top命令

  top命令是我们经常使用的查看进程系统资源使用情况的工具,那么top有什么常用的选项、各个显示项又代表什么呢?

常用参数

# 常用参数
d   指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之
p   通过指定监控进程ID来仅仅监控某个进程的状态
c   显示进程名称或整个运行命令
s  使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
i   使top不显示任何闲置或者僵死进程
S  指定累计模式 

实例:

# top          //每隔5秒显式所有进程的资源占用情况
# top -d 2         //每隔2秒显式所有进程的资源占用情况
# top -c           //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
# top -p 12345 -p 6789        //每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
# top -d 2 -c -p 123456       //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

参数详解

  以下图为例对top命令结果做详细记录

注:top命令执行以后,大写M,按内存使用情况排序;大写P,按cpu使用情况排序;大写H,显示线程数;数字1,可查看CPU个数,限于屏幕大小原因可能显示不完成,可通过/proc/cpuinfo中搜索"model name"查看具体个数。

1、第一行任务队列信息,同uptime命令效果相同

02:22:03 当前时间
up 1 day, 18:09 系统运行时间
1 user 当前登陆用户数
load average: 0.00, 0.00, 0.00  系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的系统平均负载

  什么是系统平均负载?平均负载可以理解为当前系统的平均活跃进程数,包含了系统处于可运行状态和不可中断状态的平均进程数,就是平均活跃进程数。

  那么知道了什么是系统平均负载,那么它为多少时代表我们的系统负载较高呢?比如,此时1分钟的平均负载为5.6,而我们的操作系统是4个CPU,那么就代表此时系统负载过高,意味着有160%的的超载进程竞争不到CPU;若负载为2.0,则意味着有50%的CPU空闲。

2、第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:(top命令回车后,按数字"1"就会显示cpu的核数,前提是当前屏幕足够大,能够全部显示cpu核数

total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s):
0.3% us 用户空间占用CPU百分比
0.3% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
99.5% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0%hi:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.0%st:虚拟机占用百分比

  从上我们可以看到进程的状态都处于S状态,那么除了S,还有其他进程状态么?当然除了S状态,还有R、D、Z、I 等几个状态,它们分别是什么意思呢?

  • R 是 Running 或 Runnable 的缩写,表示进程在 CPU 的就绪队列中,正在运行或者正在等待运行。
  • D 是 Disk Sleep 的缩写,也就是不可中断状态睡眠(Uninterruptible Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断。
  • Z 是 Zombie 的缩写,它表示僵尸进程,也就是进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符、PID 等)。
  • S 是 Interruptible Sleep 的缩写,也就是可中断状态睡眠,表示进程因为等待某个事件而被系统挂起。当进程等待的事件发生时,它会被唤醒并进入 R 状态。
  • I 是 Idle 的缩写,也就是空闲状态,用在不可中断睡眠的内核线程上。硬件交互导致的不可中断进程用 D 表示,但对某些内核线程来说,它们有可能实际上并没有任何负载,用 Idle 正是为了区分这种情况。D 状态的进程会导致平均负载升高, I 状态的进程却不会。
3、第四、五行为内存信息
Mem:
65724264k total    物理内存总量
37653788k used    使用的物理内存总量
28070476k free    空闲内存总量
371320k buffers    用作内核缓存的内存量
Swap:
32767996k total    交换区总量
0k used            使用的交换区总量
32767996k free    空闲交换区总量
31845892k cached    缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入
4、进程信息区统计信息区域的下方显示了各个进程的详细信息。
 列名    含义
 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
 SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
 RES     进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
 CODE    可执行代码占用的物理内存大小,单位kb
 DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
 SHR     共享内存大小,单位kb
 nFLT    页面错误次数
 nDRT    最后一次写入到现在,被修改过的页面数。
 S       进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
 COMMAND 命令名/命令行
 WCHAN   若该进程在睡眠,则显示睡眠中的系统函数名
 Flags   任务标志,参考 sched.h
 
  以上则为本次top命令的各参数含义记录。
posted @ 2021-08-22 21:51  wushaoyu  阅读(6484)  评论(0编辑  收藏  举报