Linux 命令 - top

Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
top - 11:33:24 up 52 days, 41 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 186 total, 1 running, 185 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16335708 total, 11381828 free, 1275880 used, 3678000 buff/cache
KiB Swap: 16679932 total, 16679932 free, 0 used. 14545716 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1579 www 20 0 53956 25572 2924 S 0.3 0.2 4:43.80 nginx
1 root 20 0 37856 5856 3972 S 0.0 0.0 4:00.24 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.47 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.81 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 59:33.18 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.60 migration/0
10 root rt 0 0 0 0 S 0.0 0.0 0:21.35 watchdog/0

说明

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 当前时间 11:33:24; 系统运行了52天41分;当前登录了1个人;1,5,15分钟的系统负载;等待执行的任务长度
top - 11:33:24 up 52 days, 41 min, 1 user, load average: 0.00, 0.00, 0.00

# 186个进程,1个正在运行,185个在睡眠,0个停止,0个僵尸进程
Tasks: 186 total, 1 running, 185 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
0.0 us # user CPU time 运行(未调整优先级的) 用户进程的CPU时间
0.2 sy # system CPU time 运行内核进程的CPU时间
0.0 ni # nice CPU time 运行已调整优先级的用户进程的CPU时间
99.8 id # idle 空闲CPU
0.1 wa # iowait 用于等待IO完成的CPU时间
0.0 hi # hardware irq 处理硬件中断的CPU时间
0.0 si # software irq 处理软件中断的CPU时间
0.0 st # steal time 这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)

KiB Mem : 16335708 total, 11381828 free, 1275880 used, 3678000 buff/cache
KiB Swap: 16679932 total, 16679932 free, 0 used. 14545716 avail Mem

16335708 total # 物理内存总量
11381828 free # 空闲内存总量
1275880 used # 使用的物理内存总量
3678000 buff/cache # 缓存的内存量
16679932 total # 交换区总量
16679932 free # 空闲交换区总量
0 used # 使用的交换区总量
14545716 avail Mem # 缓存交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。


PID # 进程ID,进程的唯一标识符
PPID # 父进程id
UID # 进程所有者的用户id
USER # 进程所有者的实际用户名
GROUP # 进程所有者的组名
TTY # 启动进程的终端名。不是从终端启动的进程则显示为 ?
PR # 进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI # 进程的nice值(优先级)。越小的值意味着越高的优先级。
P # 最后使用的CPU,仅在多CPU环境下有意义
VIRT # 进程使用的总虚拟内存 (virtual memory) 大小,包括进程的程序码、资料和共享程序库再加上被置换 (swap out) 的空间。VIRT = SWAP + RES
SWAP # 进程被置换的虚拟内存空间大小
RES # 进程非被置换的实体内存大小。RES = CODE + DATA
CODE # 进程的程序码在实体内存占用空间大小
DATA # 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR # 进程使用的共享内存大小,即可以和其他进程共享的内存空间
nFLT # 页面错误次数
nDRT # 最后一次写入到现在,被修改过的页面数。
S # 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU # 上次屏幕更新到现在的CPU时间占用百分比
%MEM # 进程使用的物理内存百分比
TIME+ # 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒
COMMAND # 进程名称(命令名/命令行)
WCHAN # 若该进程在睡眠,则显示睡眠中的系统函数名
Flags # 任务标志,参考 sched.h

选项

  • -b - 以批处理模式启动top命令。当你想要在文件中保存输出时是很有用的。

  • -c - 是否显示程序/命令的完整路径

  • -d - 设置屏幕刷新间隔

  • -i - 切换显示空闲进程

  • -n - 屏幕刷新几次后退出 top 命令

  • -p - 你可以用-p选项监控指定的PID。PID的值为0将被作为top命令自身的PID。

  • -u-U - 用户名 或者 UID

    可以用这些选项浏览特定用户的进程。用户名或者UID可以在选项中指定。-p、-u和-U选项是互斥的,同时只可以使用这其中一个选项

交互命令

  • h? - 显示交互命令的帮助菜单

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Help for Interactive Commands - procps-ng version 3.3.10
    Window 1:Def: Cumulative mode Off. System: Delay 3.0 secs; Secure mode Off.

    Z,B,E,e Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
    l,t,m Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
    0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
    f,F,X Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width

    L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
    R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
    c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
    x,y . Toggle highlights: 'x' sort field; 'y' running tasks
    z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
    u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
    n,#,^O . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
    C,... . Toggle scroll coordinates msg for: up,down,left,right,home,end

    k,r Manipulate tasks: 'k' kill; 'r' renice
    d or s Set update interval
    W,Y Write configuration file 'W'; Inspect other output 'Y'
    q Quit
    ( commands shown with '.' require a visible task display window )
    Press 'h' or '?' for help with Windows,
    Type 'q' or <Esc> to continue
  • top命令默认在一个特定间隔(3秒)后刷新显示。要手动刷新,用户可以输入回车或者空格

  • A - 切换交替显示模式

    这个命令在全屏和交替模式间切换。在交替模式下会显示4个窗口(译注:分别关注不同的字段):

    1. Def (默认字段组)
    2. Job (任务字段组)
    3. Mem (内存字段组)
    4. Usr (用户字段组)

    这四组字段共有一个独立的可配置的概括区域和它自己的可配置任务区域。4个窗口中只有一个窗口是当前窗口。当前窗口的名称显示在左上方。(译注:只有当前窗口才会接受你键盘交互命令)

    我们可以用’a’和’w’在4个 窗口间切换。’a’移到后一个窗口,’w’移到前一个窗口。用’g’命令你可以输入一个数字来选择当前窗口。

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    1:Def - 10:11:07 up 52 days, 23:19,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 1.0 us, 0.6 sy, 0.0 ni, 98.3 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
    KiB Mem : 16335708 total, 11379220 free, 1277840 used, 3678648 buff/cache
    KiB Swap: 16679932 total, 16679932 free, 0 used. 14543688 avail Mem

    1 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1 root 20 0 37804 5844 3972 S 1.0 0.0 4:04.34 systemd
    746 message+ 20 0 43024 3964 3376 S 1.0 0.0 0:51.24 dbus-daemon
    379 root 20 0 35276 7496 7144 S 0.3 0.0 0:44.48 systemd-journal
    523 root 20 0 95368 6900 5968 S 0.3 0.0 0:00.20 sshd
    740 syslog 20 0 256396 4160 2752 S 0.3 0.0 0:13.94 rsyslogd
    855 root 20 0 29396 3968 2760 S 0.3 0.0 0:22.99 systemd-logind
    872 root 20 0 43672 3804 3060 R 0.3 0.0 0:00.02 top
    971 root 10 -10 5724 3528 2436 S 0.3 0.0 10:40.83 iscsid
    2 root 20 0 0 0 0 S 0.0 0.0 0:00.48 kthreadd
    3 root 20 0 0 0 0 S 0.0 0.0 0:01.85 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 60:37.04 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.61 migration/0
    10 root rt 0 0 0 0 S 0.0 0.0 0:21.74 watchdog/0
    2 PID PPID TIME+ %CPU %MEM PR NI S VIRT RES UID COMMAND
    31928 2 0:00.00 0.0 0.0 20 0 S 0 0 0 kworker/3:3
    31888 2 0:00.01 0.0 0.0 20 0 S 0 0 0 kworker/1:0
    31698 2 0:02.16 0.0 0.0 20 0 S 0 0 0 kworker/1:2
    31692 2 0:02.12 0.0 0.0 20 0 S 0 0 0 kworker/3:0
    31651 2 0:02.40 0.0 0.0 20 0 S 0 0 0 kworker/2:2
    13737 2 0:00.00 0.0 0.0 20 0 S 0 0 0 jfsSync
    13736 2 0:00.00 0.0 0.0 20 0 S 0 0 0 jfsCommit
    13735 2 0:00.00 0.0 0.0 20 0 S 0 0 0 jfsCommit
    13734 2 0:00.00 0.0 0.0 20 0 S 0 0 0 jfsCommit
    13733 2 0:00.00 0.0 0.0 20 0 S 0 0 0 jfsCommit
    13732 2 0:00.00 0.0 0.0 20 0 S 0 0 0 jfsIO
    13722 2 0:00.00 0.0 0.0 0 -20 S 0 0 0 xfs_mru_cache
    13721 2 0:00.00 0.0 0.0 0 -20 S 0 0 0 xfsalloc
    3718 1628 0:00.70 0.0 0.1 20 0 S 211344 17620 1003 php-fpm
    3505 1628 0:00.38 0.0 0.1 20 0 S 211344 17700 1003 php-fpm
    3 PID %MEM VIRT RES CODE DATA SHR nMaj nDRT %CPU COMMAND
    1612 5.0 3328216 818040 12624 3282764 13784 111 0 0.0 mysqld
    1648 0.2 292032 28352 8376 86228 15672 3 0 0.0 php-fpm
    1635 0.2 291324 26620 8376 85520 14680 0 0 0.0 php-fpm
    1657 0.2 291324 26620 8376 85520 14680 0 0 0.0 php-fpm
    1581 0.2 54032 25680 728 22988 2924 0 0 0.0 nginx
    1580 0.2 54032 25600 728 22988 2924 0 0 0.0 nginx
    1579 0.2 53956 25572 728 22912 2924 0 0 0.0 nginx
    1582 0.2 53828 25288 728 22784 2924 0 0 0.0 nginx
    1665 0.1 288848 22708 8376 83044 13072 0 0 0.0 php-fpm
    1650 0.1 287924 22060 8376 82120 13252 2 0 0.0 php-fpm
    1647 0.1 288180 22040 8376 82376 13064 0 0 0.0 php-fpm
    1653 0.1 214396 21952 8376 10668 10940 0 0 0.0 php-fpm
    1660 0.1 287668 21456 8376 81864 13072 0 0 0.0 php-fpm
    1649 0.1 287156 21292 8376 81352 13252 1 0 0.0 php-fpm
    1659 0.1 287408 21188 8376 81604 13072 0 0 0.0 php-fpm
    4 PID PPID UID USER RUSER TTY TIME+ %CPU %MEM S COMMAND
    1579 1578 1003 www www ? 4:51.06 0.0 0.2 S nginx
    1580 1578 1003 www www ? 4:24.78 0.0 0.2 S nginx
    1581 1578 1003 www www ? 6:41.79 0.0 0.2 S nginx
    1582 1578 1003 www www ? 5:07.00 0.0 0.2 S nginx
    1629 1628 1003 www www ? 0:00.88 0.0 0.1 S php-fpm
    1630 1628 1003 www www ? 0:00.87 0.0 0.1 S php-fpm
    1631 1628 1003 www www ? 0:00.86 0.0 0.1 S php-fpm
    1632 1628 1003 www www ? 0:00.76 0.0 0.1 S php-fpm
    1633 1628 1003 www www ? 0:00.82 0.0 0.1 S php-fpm
    1634 1628 1003 www www ? 0:00.84 0.0 0.1 S php-fpm
    1635 1628 1003 www www ? 0:00.80 0.0 0.2 S php-fpm
    1636 1628 1003 www www ? 0:00.84 0.0 0.1 S php-fpm
    1637 1628 1003 www www ? 0:00.90 0.0 0.1 S php-fpm
    1638 1628 1003 www www ? 0:00.85 0.0 0.1 S php-fpm
    1639 1628 1003 www www ? 0:00.86 0.0 0.1 S php-fpm
    1640 1628 1003 www www ? 0:00.78 0.0 0.1 S php-fpm
  • B - 触发粗体显示

  • ds - 设置显示的刷新间隔

    当按下’d’或’s’时,你将被提示输入一个值(以秒为单位),它会以设置的值作为刷新间隔。如果你这里输入了1,top将会每秒刷新。

    1
    2
    3
    4
    5
    6
    top - 10:13:42 up 52 days, 23:22,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 184 total, 1 running, 183 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.8 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
    KiB Mem : 16335708 total, 11379220 free, 1277816 used, 3678672 buff/cache
    KiB Swap: 16679932 total, 16679932 free, 0 used. 14543708 avail Mem
    Change delay from 3.0 to 1
  • ltm - 切换负载、任务、内存信息的显示

  • f - 字段管理

    用于选择你想要显示的字段。用’*’标记的是已选择的。

    上下光标键在字段内导航,右光标键可以选择字段,回车或左光标键确认。

    d 或者空格是否显示字段,s 按那个字段排序,默认cpu,q 或 esc 退出。

    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
      169 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 scsi_tmf_1
    170 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_2
    171 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_2
    172 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_3
    Fields Management for window 1:Def, whose current sort field is %CPU
    Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
    'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end!

    * PID = Process Id
    * USER = Effective User Name
    * PR = Priority
    * NI = Nice Value
    * VIRT = Virtual Image (KiB)
    * RES = Resident Size (KiB)
    * SHR = Shared Memory (KiB)
    * S = Process Status
    * %CPU = CPU Usage
    * %MEM = Memory Usage (RES)
    * TIME+ = CPU Time, hundredths
    * COMMAND = Command Name/Line
    PPID = Parent Process pid
    UID = Effective User Id
    RUID = Real User Id
    RUSER = Real User Name
    SUID = Saved User Id
  • R - 反向排序

  • c - 触发命令,切换是否显示进程启动时的完整路径和程序名。

  • i - 切换显示空闲任务

  • V - 切换树视图

  • Z - 改变配色

    按下’Z’向用户显示一个改变top命令的输出颜色的屏幕。可以为8个任务区域选择8种颜色。

  • z - 切换配色显示

  • u - 显示特定用户的进程

    显示特定用户的进程。你会被提示输入用户名。空白将会显示全部用户。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    top - 10:40:20 up 52 days, 23:48,  1 user,  load average: 0.00, 0.02, 0.00
    Tasks: 179 total, 1 running, 178 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
    KiB Mem : 16335708 total, 11379908 free, 1277128 used, 3678672 buff/cache
    KiB Swap: 16679932 total, 16679932 free, 0 used. 14544364 avail Mem
    Which user (blank for all) www
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    1579 www 20 0 53956 25572 2924 S 0.0 0.2 4:51.21 nginx
    1580 www 20 0 54032 25600 2924 S 0.0 0.2 4:24.94 nginx
    1581 www 20 0 54032 25680 2924 S 0.0 0.2 6:41.79 nginx
    1582 www 20 0 53828 25288 2924 S 0.0 0.2 5:07.16 nginx
    1629 www 20 0 211348 17612 9868 S 0.0 0.1 0:00.88 php-fpm
    1630 www 20 0 211252 17524 9876 S 0.0 0.1 0:00.87 php-fpm
    1631 www 20 0 212916 19192 9876 S 0.0 0.1 0:00.86 php-fpm
  • n# - 设置显示任务的最大数量

  • k - 结束任务

  • r - 重新设置任务的优先级

参考

0%