命令 top 动态监控进程所占系统资源

用 top 命令显示进程所占的系统资源

这个命令用于动态监控进程所占系统资源,每隔 3 秒变一次。这个命令的特点是把占用系统资源(CPU,内存,磁盘 IO 等)最高的进程放到最前面。

命令 top 用法

语法: top [options]

Options:
-b:批量处理模式;
-c:显示详细进程信息;
-bn1:静态显示所有进程(该法多用于 shell 脚本);

[root@adai003 ~]# top
top - 23:28:08 up 12:24,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  84 total,   1 running,  83 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1008392 total,   754160 free,   113712 used,   140520 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   740452 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                    
  490 root      20   0  302840   6340   4780 S  0.3  0.6   1:42.80 vmtoolsd                   
    1 root      20   0  125048   3560   2400 S  0.0  0.4   0:02.13 systemd                    
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd                   
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.21 ksoftirqd/0                
    6 root      20   0       0      0      0 S  0.0  0.0   0:01.39 kworker/u128:0             
……

注: 在 top 状态下(按 q 退出),按 shift+m 可以按内存使用大小进行排序(默认以 CPU 使用占比排序),按 shift+p 恢复按 CPU 使用占比排序,,按数字 1 可以显示每个 CPU 的状态。

说明:

  • 第一行是系统负载(loadaverage);
  • 第二行是进程数(Tasks);
  • 第三行是 CPU 使用信息;
  • 第四行是内存使用信息;
  • 第五行是交换区使用信息 ;
  • 最下面是进程详细信息:
    RES:表示进程所用物理内存大小(单位:KB)
    %MEM:表示内存使用百分比(单位:KB)

注意:

%CPU, %MEM, COMMAND 这些项目所代表的意义,RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top
状态下,按 “shift + m”, 可以按照内存使用大小排序。按数字 ‘1’ 可以列出各颗 cpu 的使用状态,按 q 键可以退出 top。

  • 另外经常用的一个命令 top -bn1 它表示非动态打印系统资源使用情况,可以用在 shell 脚本中:
[root@localhost ~]# top -bn1
top - 16:44:12 up  4:54,  3 users,  load average: 0.54, 0.18, 0.05
Tasks:  78 total,   1 running,  77 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.4%us,  3.3%sy,  0.0%ni, 93.3%id,  1.4%wa,  0.1%hi,  0.5%si,  0.0%st
Mem:    326616k total,   318672k used,     7944k free,    62704k buffers
Swap:  2097144k total,      588k used,  2096556k free,   177848k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7236 root      20   0  2936 1220  624 D  7.8  0.4   0:03.22 ls
 7237 root      20   0  2568  956  760 R  1.9  0.3   0:00.03 top
    1 root      20   0  2900  800  652 S  0.0  0.2   0:01.52 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:11.08 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.94 watchdog/0
    7 root      20   0     0    0    0 S  0.0  0.0   0:04.38 events/0

和 top 命令唯一的区别就是,它一次性全部把所有信息输出出来而非动态显示。