dcLunatic's blog

top命令

字数统计: 2.2k阅读时长: 9 min
2018/08/28 Share

top命令

作用

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于windows的任务管理器。top是一个动态显示过程,即可以通过用户按键输入来不断的刷新当前的状态,会占用前台。top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.

格式

top [参数]

常用参数

  • -b 批处理
  • -c 显示完整的命令
  • -I 忽略失效的进程
  • -s 保密模式
  • -S 累计模式
  • -d<时间> 设置刷新间隔时间,单位s
  • -u<用户名> 指定显示某个用户的
  • -p<进程号> 指定显示某个进程的
  • -n<次数> 指定循环次数

    当指定了-d参数而没有指定-n参数时,会不断的循环刷新,默认的刷新时间是5s

使用例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
root@dcLunatic:~# top

top - 01:02:01 up 11:58, 1 user, load average: 1.45, 1.27, 0.88
Tasks: 260 total, 2 running, 258 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.1 us, 1.2 sy, 0.0 ni, 94.6 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 3834.7 total, 751.4 free, 2192.0 used, 891.4 buff/cache
MiB Swap: 3982.0 total, 3106.7 free, 875.2 used. 986.5 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1314 root 20 0 2898636 260680 42968 R 5.6 6.6 42:37.61 gnome-shell
2322 root 20 0 655776 127692 38068 S 5.3 3.3 66:20.56 chrome
9985 root 20 0 945984 263208 172800 S 5.3 6.7 4:58.68 chrome
2287 root 20 0 1470104 191996 73624 S 3.6 4.9 60:25.74 chrome
1135 root 20 0 476540 56436 39240 S 2.0 1.4 24:52.52 Xorg
1625 root 20 0 283808 15124 4756 S 0.7 0.4 1:28.57 ibus-engine-pin
8 root 20 0 0 0 0 I 0.3 0.0 0:46.93 rcu_sched
1236 root 20 0 410500 7568 3408 S 0.3 0.2 3:03.01 ibus-daemon
1264 root 20 0 453988 10424 8188 S 0.3 0.3 1:37.77 ibus-x11
4686 root 20 0 535284 37820 18140 S 0.3 1.0 0:36.24 gnome-terminal-
5090 root 20 0 799096 113792 47004 S 0.3 2.9 1:43.60 chrome
5105 root 20 0 899760 191356 56888 S 0.3 4.9 0:58.34 chrome
10163 root 20 0 0 0 0 D 0.3 0.0 0:02.05 kworker/u8:3
10224 root 20 0 0 0 0 I 0.3 0.0 0:00.25 kworker/u8:4
10232 root 20 0 29096 3716 3100 R 0.3 0.1 0:00.03 top
1 root 20 0 206180 4376 3060 S 0.0 0.1 0:44.02 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd

前五行是当前系统情况的统计信息区

  1. 第一行,任务队列信息,同uptime命令的执行结果,具体参数说明情况如下

top - 01:02:01 up 11:58, 1 user, load average: 1.45, 1.27, 0.88

  • 01:02:01 当前系统时间
  • up 11:58 系统已经运行了11:58时间长了
  • 1 user 当前有1个用户登录系统
  • load average: 1.45, 1.27, 0.88 当前系统的负载统计值,分别是1分钟,5分钟,15分钟的。每5s钟检查一次活跃的进程数,然后按照特定的算法计算出负载情况。如果这个数除以逻辑cpu的数量,结果高于5就表明系统在超负荷运行了
  1. 第二行,Tasks,任务(进程),具体信息说明情况如下

Tasks: 260 total, 2 running, 258 sleeping, 0 stopped, 0 zombie

系统现在总共有206个进程,其中处于运行中的有两个,258个在休眠(sleep),stoped状态的有0个,僵尸进程0个。

  1. 第三行,%Cpu(s),cpu状态信息,具体属性说明如下

%Cpu(s): 4.1 us, 1.2 sy, 0.0 ni, 94.6 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st

  • 4.1 us 用户空间占用cpu的百分比
  • 1.2 sy 内核空间占用cpu的百分比
  • 0.0 ni 改变过优先级的进程占用cpu的百分比
  • 94.6 id 空闲cpu百分比
  • 0.0 wa IO等待占用cpu的百分比
  • 0.0 hi 硬中断(Hardware IRQ)占用cpu的百分比
  • 0.2 si 软中断(Software Interrupts)占用cpu的百分比
  1. 第四行,内存状态,具体信息如下

MiB Mem : 3834.7 total, 751.4 free, 2192.0 used, 891.4 buff/cache

  • 3834.7 total 物理内存大小为3834.7M,大概是4G
  • 751.4 free 空闲的内存总量为751.4M
  • 2192.0 used 使用中的内存总量为2192.0M
  • 891.4 buff/cache 缓冲的交换区总量891.4M
  1. 第五行,swap交换分区信息,具体信息说明如下

MiB Swap: 3982.0 total, 3106.7 free, 875.2 used. 986.5 avail Mem

  • 3982.0 total 总共有3982.0M的交换空间
  • 3106.7 free 空闲中的交换空间有3106.7M
  • 875.2 used 使用中的交换空间有875.2M
  • 986.5 avail 缓冲中的(可利用的)交换空间有986.5M

使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

  1. 第六行,空行,这一行是用来交互实时执行一些东西的。
  2. 第七行,各进程(任务)的状态监控,项目列信息说明如下

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

  • PID 进程的id
  • USER 进程所有者
  • PR 进程优先级
  • NI nice值,负责表示高优先级,正则表示低优先级
  • VIRT 进程中使用虚拟内存总量,单位是kb。VIRT=SWAP+RES
  • RES 进程中使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  • SHA 共享内存大小,单位kb
  • S 进程状态 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • %CPU 上次更新到现在CPU时间占用百分比
  • %MEM 进程使用的物理内存占用百分比
  • TIME+ 进程使用的CPU时间总计,单位ms
  • COMMAND 进程名称或者命令行

使用技巧

  1. 多核cpu监控

在top的基本视图中,按下键盘数字’1’,可监控每个逻辑cpu的状况

%Cpu(s): 2.7 us, 0.8 sy, 0.0 ni, 96.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

按下1后变成

1
2
3
4
%Cpu0  :  0.3 us,  0.7 sy,  0.0 ni, 98.7 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1 : 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.3 us, 0.0 sy, 1.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  1. 高亮显示当前运行进程

    1. 敲击键盘’b’,打开关闭加亮当前正在running中的进程
    2. 敲击键盘’y’,打开关闭高亮当前正在running中的进程
  2. 进程显示的字段排序

    默认进入top时,各进程是通过cpu的占用量来排序的。

    1. 敲击键盘’x’,打开关闭排序列的加亮效果
    2. 通过’shift+<’或’shift+>’来左右改变排序列

top交互命令

在top命令过程中可以使用一些交互命令,这些命令都是单字母的,如果在命令行中使用了s选项,其中一些命令可能会给屏蔽。

  • h 显示帮助画面,给出一些简短命令总结说明
  • k 终止一个进程
  • i 忽略闲置和僵死进程
  • q 退出程序
  • r 重新安排一个进程的nice值
  • S 打开关闭累计模式
  • s 改变两次刷新的间隔时间,如果有小数,就换算成ms,输入0表示不断刷新
  • f 从当前的显示中添加项目
  • F 从当前的显示中删除项目
  • I 切换平均负载和启动时间信息
  • t 切换显示进程和cpu状态信息
  • c 切换显示命令名称和完整命令行
  • M 根据驻留内存大小进行排序
  • P 根据CPU使用百分比大小进行排序
  • T 根据时间/累计时间进行排序
  • w 将当前设置写入~/.toprc配置文件中

原文作者:dcLunatic

原文链接:http://dclunatic.github.io/linux-top.html

发表日期:August 28th 2018, 10:46:36 am

更新日期:July 11th 2021, 9:13:50 pm

版权声明:转载的时候,记得注明来处

CATALOG
  1. 1. top命令
    1. 1.1. 作用
    2. 1.2. 格式
    3. 1.3. 常用参数
    4. 1.4. 使用例子
    5. 1.5. 前五行是当前系统情况的统计信息区
    6. 1.6. 使用技巧
    7. 1.7. top交互命令