Linux top命令的使用
本文件简单介绍一下Linux环境下top命令的使用。
1. top命令
top命令输出:
# top top - 14:39:02 up 1 day, 2:46, 4 users, load average: 0.00, 0.00, 0.00 Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.4 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8093596 total, 7201400 used, 892196 free, 1000 buffers KiB Swap: 8000508 total, 880 used, 7999628 free. 1732676 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2079 root 20 0 1598784 124000 71432 S 1.3 1.5 8:59.30 compiz 1 root 20 0 33760 4256 2728 S 0.0 0.1 0:01.33 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.94 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root 20 0 0 0 0 S 0.0 0.0 0:24.76 rcu_sched 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 10 root rt 0 0 0 0 S 0.0 0.0 0:00.33 watchdog/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.33 watchdog/1 12 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/1 13 root 20 0 0 0 0 S 0.0 0.0 0:01.03 ksoftirqd/1 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H 16 root rt 0 0 0 0 S 0.0 0.0 0:00.32 watchdog/2 17 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/2 18 root 20 0 0 0 0 S 0.0 0.0 0:00.72 ksoftirqd/2 20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H 21 root rt 0 0 0 0 S 0.0 0.0 0:00.33 watchdog/3 22 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/3 23 root 20 0 0 0 0 S 0.0 0.0 0:01.28 ksoftirqd/3 26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
上面top输出包含两个大的部分:
-
SUMMARY Display
-
FIELDS / Columns
1.1 SUMMARY Display
总结性显示部分一般又包含3个区域,每一个区域其实都是可以通过相应的交互命令控制。
(1) UPTIME and LOAD Averages
top - 14:39:02 up 1 day, 2:46, 4 users, load average: 0.00, 0.00, 0.00
这一部分一般是一个单独的行,包含:
-
program或window名称(这取决于显示模式)
-
当前时间和操作系统启动以来到现在的时长
-
总用户数
-
过去1分钟,5分钟,15分钟的系统平均负载
注: 其实我们可以通过uptime
命令来查看系统启动时间
# uptime 01:59:31 up 1:08, 2 users, load average: 0.00, 0.01, 0.01
(2) TASK and CPU States
Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.4 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
这一部分一般至少包含2行,在SMP(Symmetrical Multi-Processing)环境下,可能会有一些额外的行反映每个CPU的相应状态。
第一行显示 总的任务数或线程数(这依赖于线程模式切换的状态),这可以分成以下几类:running, sleeping, stopped, zombie.
第二行显示 自上一次刷新以来CPU的状态百分比。默认情况下,会显示如下条目:
-
us, user: 普通用户进程运行在用户空间的时间占总CPU时间的百分比(un-niced user processes)
-
sy, system: 所有进程运行在内核空间的时间占总CPU时间的百分比
-
ni, nice: 特权用户进程的运行时间(niced user processes)
-
id, idle: 内核空闲时间
-
wa, IO-wait: 等待IO完成所花费的时间(IO时间)
-
hi: 服务硬件中断所消耗的时间
-
si: 服务软件中断所消耗的时间
-
st: hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比
(3) MEMORY Usage
KiB Mem: 8093596 total, 7201400 used, 892196 free, 1000 buffers KiB Swap: 8000508 total, 880 used, 7999628 free. 1732676 cached Mem
这一个部分包含两行,单位可以是KiB到EiB,这依赖于使用top时所采用的选项。
默认情况下,第一行反映的物理内存
的情况,一般包含如下几类: total, free, used, buff/cache
第二行反映的是虚拟内存的情况,一般包含如下几类:total, free, used, avail。
关于cached Mem
,这里再做一个说明:
cached Mem用于指示缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存, 但使用过的交换区尚未被覆盖。该数值即为这些内容已存在于内存中的交换区的大小,相应的 内存再次被换出时可不必再对交换区写入。
1.2 3. FIELDS / Columns
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2079 midea 20 0 1598784 124000 71432 S 1.3 1.5 8:59.30 compiz 1 root 20 0 33760 4256 2728 S 0.0 0.1 0:01.33 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.94 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root 20 0 0 0 0 S 0.0 0.0 0:24.76 rcu_sched 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 10 root rt 0 0 0 0 S 0.0 0.0 0:00.33 watchdog/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.33 watchdog/1 12 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/1 13 root 20 0 0 0 0 S 0.0 0.0 0:01.03 ksoftirqd/1 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H 16 root rt 0 0 0 0 S 0.0 0.0 0:00.32 watchdog/2 17 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/2 18 root 20 0 0 0 0 S 0.0 0.0 0:00.72 ksoftirqd/2 20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H 21 root rt 0 0 0 0 S 0.0 0.0 0:00.33 watchdog/3 22 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/3 23 root 20 0 0 0 0 S 0.0 0.0 0:01.28 ksoftirqd/3 26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
下面简要对如下各字段进行介绍:
-
PID: 进程ID
-
USER: The effective user name of the task’s owner
-
PR: 任务调度的优先权(假如显示为rt,表示实时调度)
-
NI: 该任务的nice值。假如nice值小于0,表明其具有一个更高的优先权;大于0,表明其具有一个更低的优先权;等于0,表明任务调度时优先级别并不会被调整。
-
VIRT: 该任务所使用的虚拟内存大小
-
RES: 该任务所使用的物理内存大小(resident)
-
SHR: 该任务可用的共享内存大小(通常并不是可用物理内存大小)
-
%CPU: 该任务耗费的CPU时间百分比
-
%MEM: 该任务所占用的物理内存百分比
-
TIME+: 该任务自启动以来所耗费的CPU时间
-
COMMAND: 启动该任务所使用的命令行
注:
top命令默认按CPU占用的大小进行排序,我们可以在top界面输入M来按内存排序, 输入P来按CPU占用排序。
[参看]: