功能描述

使用top命令可以显示当前正在运行的进程及关于它们的重要信息,包括它们的内存和CPU使用量。执行top命令可以显示目前正在系统中执行的进程,并通过它所提供的互动式界面,用热键加以管理。要退出top,按[q]键即可。

命令语法

top [选项]

选项含义

选项 含义
-b 使用批处理模式。
-c

列出程序时,显示每个程序的完整指令,包括指令名称,路径和参数等相关信息。

-d<间隔秒数> 设置 top 监控程序执行状况的间隔时间,单位以秒计算。
-i 执行 top 指令时,忽略闲置或是已成为 Zombie 的程序。
-n<执行次数> 设置监控信息的更新次数。
-s 安全模式下运行
-S 使用累积时间模式
-u<用户名|有效用户UID> 监视指定有效用户UID或用户名匹配的进程
-p<进程PID> 监视指定进程ID的进程
-U<用户名|用户UID> 监视指定用户UID或用户名匹配的进程
-a 按内存使用率排序显示进程
-m 报告USED,而不是VIRT
-M 使用K、M、G显示内存信息,并显示在内存中总结的浮点值
-s 安全模式下运行

top命令按键

按键 功能
k 终止一个进程
q 退出进程
r 重新安排一个进程的优先级别(-20~19)
S 切换到累计模式
s 改变两次刷新之间的延迟时间。系统提示用户输入新的时间,单位为秒
f或F 从当前显示信息中添加或者删除项目
o或O 改变显示信息项目的顺序
m 切换显示内存信息。即显示隐藏内存行信息
t 切换显示进程和CPU状态信息。即显示隐藏进程和CPU行信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
p 根据cpu使用百分比大小进行排序(默认进入时即为此排序)
W 将当前设置写入~/.toprc文件中
u或U 显示特定用户的进程
?或h 帮助
d或s 设置top更新频率,默认情况下top命令以3秒的频率更新输出结果
n或# 指定显示的进程数目
1(数字1) 开启/关闭显示各个CPU核的信息
R 切换正常/反向排序
H 显示主题
z 切换彩色/黑白
Z 改变颜色映射
<和> 移动排序列,<是向左移,>是向右移
i 显示空闲任务
x 将排序字段列加粗显示
y 加粗显示正在运行的任务
I 切换Irix/Solaris模式
l 切换显示平均负载和启动时间信息。即显示/隐藏命令输出的第一行信息
B 显示粗体(对头部数据有效)
b 在x/y模式下,切换使用粗体或反色
t 显示或隐藏任务/CPU信息

top命令输出字段描述
 
PID  进程号ID
PPID 父进程ID
RUSER 真实的用户名称
UID 进程所有者的用户UID
USER  进程所有者的用户名
GROUP 进程所有者的组群名
TTY 启动进程的控制终端名,不是从终端启动的进程则显示为?
PR  优先级
 NI  nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,在多CPU环境下有意义
VIRT  进程使用的虚拟内存总量,单位kb
RES  进程使用的、末被换出的物理内存大小,单位kb
SHR  共享内存大小,单位kb
S  进程状态
  • D:不可中断的休眠状态
  • R:运行
  • S:休眠
  • T:跟踪/停止
  • Z:僵尸进程
 %CPU  上次更新到现在的CPU时间占用百分比
 %MEM  进程使用的物理内存百分比
TIME 进程使用的CPU时间总计,单位为秒
TIME+  进程使用的CPU时间总计,单位1/100秒
SWAP 进程使用的虚拟内存中,被换出的大小,单位为kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位为kb
DATA 可执行代码以外的部分占用的物理内存大小,单位为kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数
COMMAND  命令名/程序名
WCHAN 如果该进程在休眠,则显示睡眠中的系统函数名
Flags 任务标志

 

 top - 09:09:05  当前系统时间
  2:41  系统已经运行2小时41分钟
  2 users  当前登录2个用户
 load average: 0.00, 0.00, 0.00  系统平均负载:1分钟、5分钟、15分钟
 Tasks: 138 total  任务:138个总进程
 1 running  1个进程正在运行
 137 sleeping  137个进程睡眠
 0 stopped  0个进程停止
 0 zombie  0个僵尸进程(冻结进程)
 Cpu(s):  0.0%us  用户控件占用CPU百分比
 0.0%sy  内核空间占用CPU百分比
 0.0%ni  用户进程控件内改变过优先级的进程占用CPU百分比
 100.0%id  空闲CPU百分比
  0.0%wa  等待输入输出的CPU时间百分比
 0.0%hi  
 0.0%si  
 Mem:   2054532k total  物理内存总量2054532k
 337780k used  使用了337780k的物理内存
1716752k free  空闲1716752k的物理内存
 41704k buffers  41704k用作内核缓存
 Swap:  8191992k total  交换分区总量8191992k
 0k used  没有使用交换分区
 8191992k free  空闲的交换分区总量8191992k
 104152k cached  缓冲的交换分区总量104152k


示例:

动态显示进程信息
[root@localhost ~]# top
top - 10:51:47 up 7 days, 22:47,  2 users,  load average: 0.01, 0.02, 0.05
Tasks: 172 total,   1 running, 171 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  0.7 sy,  0.0 ni, 97.1 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  1875500 total,   518536 free,   920984 used,   435980 buff/cache
KiB Swap:  2097148 total,  2071940 free,    25208 used.   660096 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                             
39507 rocketc+  20   0 2869980 538044  11120 S   4.0 28.7  56:23.77 node                                                                
39427 mongod    20   0 4129188  65076  15976 S   2.3  3.5  93:56.57 mongod                                                              
  781 root      20   0  305368   1660   1308 S   0.3  0.1  18:50.28 vmtoolsd                                                            
13690 root      20   0  523812  17692  11292 S   0.3  0.9   1:12.73 php-fpm                                                             
52530 root      20   0       0      0      0 S   0.3  0.0   0:00.11 kworker/0:0                                                         
52674 root      20   0  157764   2268   1560 R   0.3  0.1   0:00.17 top                                                                 
    1 root      20   0  193700   4620   2584 S   0.0  0.2   2:45.32 systemd                                                             
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.70 kthreadd                                                            
    3 root      20   0       0      0      0 S   0.0  0.0   0:15.69 ksoftirqd/0                                                         
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                        
    7 root      rt   0       0      0      0 S   0.0  0.0   0:04.50 migration/0                                                         
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                              
    9 root      20   0       0      0      0 S   0.0  0.0   3:50.08 rcu_sched                                                           
   10 root      rt   0       0      0      0 S   0.0  0.0   0:11.66 watchdog/0                                                          
   11 root      rt   0       0      0      0 S   0.0  0.0   0:13.48 watchdog/1      
   
 

指定刷新的时间隔时间为5秒

[root@localhost ~]# top -d 5
 

以批量处理模式操作同时指定循环显示的次数

[root@localhost ~]# top -b -n2
 

注意:当cpu占用率过高时,不应再直接执行top命令查看,可以将信息存入一个文件内查看,以免cpu占用率过高导致崩。操作如下:

[root@localhost ~]# top -b -n1 > top.txt

[root@localhost ~]# cat top.txt

  top - 09:05:17 up 2:37, 2 users, load average: 0.03, 0.01, 0.00

  Tasks: 138 total, 1 running, 137 sleeping, 0 stopped, 0 zombie

  Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 98.6%id, 1.1%wa, 0.0%hi, 0.0%si, 0.0%st

  Mem: 2054532k total, 337656k used, 1716876k free, 41648k buffers

  Swap: 8191992k total, 0k used, 8191992k free, 104132k cached

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

  2510 root 20 0 15032 1116 824 R 3.5 0.1 0:00.09 top

  1 root 20 0 19356 1536 1228 S 0.0 0.1 0:01.23 init

  2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd

  3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

  4 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0

  5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

  6 root RT 0 0 0 0 S 0.0 0.0 0:00.04 watchdog/0

  7 root 20 0 0 0 0 S 0.0 0.0 0:00.82 events/0

  8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup

  9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
 

只显示gdm用户名的进程

[root@localhost ~]# top -u gdm
 

只显示进程号为1697的进程
[root@localhost ~]# top -p 1697

 

top 命令小技巧

1、输入大写P,则结果按CPU占用降序排序。
2、输入大写M,结果按内存占用降序排序。
3、按数字 1 则可以显示所有CPU核心的负载情况。
4、top -d 5    每隔 5 秒刷新一次,默认 1 秒
5、top -p 4360,4358    监控指定进程
6、top -U johndoe    ‘U’为 真实/有效/保存/文件系统用户名。
7、top -u 500    ‘u’为有效用户标识
8、top -bn 1    显示所有进程信息,top -n 1 只显示一屏信息,供管道调用
9、top -M   #show memory summary in megabytes not kilobytes
10、top -p 25097 -n 1 -b    # -b 避免输出控制字符,管道调用出现乱码
11、top翻页:top -bn1 | less
12、增强版的 top:htop ,一个更加强大的交互式进程管理器:


 

进程相关基础知识