您的位置:

Linux服务器性能监控:使用 top 指令实时查看进程和系统资源

一、什么是 top 指令

top 是 Linux 系统下常用的性能监控工具,它用于以实时方式显示系统总体运行情况及各个进程的资源占用情况。通过 top 指令,可以快速了解系统的运行状态,察看 CPU、内存、I/O 等关键性能指标,以及了解每个进程的 CPU、内存、线程等占用情况,帮助我们及时发现系统异常情况。

二、如何使用 top 指令

下面我们以 CentOS 系统为例,介绍 top 指令的使用方法:

$ top

top 会按照资源使用率从高到低的顺序显示当前系统运行的进程,每个进程都会展示 CPU 占用率、内存占用率、运行状态、运行时间、进程 ID 等信息。我们可以看到最上面的几条记录,它们是 CPU、内存、swap 的概略信息:

top - 05:38:19 up 2 days,  2:33,  1 user,  load average: 2.55, 2.35, 2.15
Tasks: 389 total,   8 running, 381 sleeping,   0 stopped,   0 zombie
%Cpu(s): 15.6 us,  1.9 sy,  0.0 ni, 79.8 id,  2.6 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem : 16064896 total,  7399676 free,  5780848 used,  2885372 buff/cache
KiB Swap:  1048572 total,   992836 free,    55192 used.  8841872 avail Mem

其中:

  • load average 表示系统的负载;
  • Task 表示进程数量;
  • %Cpu(s) 表示 CPU 的使用情况;
  • KiB Mem 表示内存使用情况。

除了上面的系统概况外,top 指令还会列出各进程的实时 CPU、内存等资源占用情况:

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1244 root      20   0 36.075g 2.983g  16012 S 281.2 19.0  27:45.86 java
20850 root      20   0  0.390t 1.298g  27200 S  43.8  8.3 423:27.65 java
19128 mysql     20   0 538.5m  92.8m  12148 S  17.2  0.6 709:49.90 mysqld
25151 nginx     20   0  159488  27572   4364 R   7.3  0.2   0:00.09 php-fpm
   23 root      20   0       0      0      0 S   1.3  0.0  13:23.38 ksoftirqd/2

其中每一列的含义如下:

  • PID:进程 ID;
  • USER:运行进程的用户;
  • %CPU:进程占用 CPU 资源的百分比;
  • %MEM:进程占用内存资源的百分比;
  • TIME+:进程运行的时间。

我们还可以通过一些快捷键改变 top 界面的显示内容,例如:

  • 输入 P,将根据 CPU 百分比大小降序排列进程;
  • 输入 M,将根据内存占用大小降序排列进程。

三、top 命令的常用选项

top 指令有一些比较常用的参数,下面我们来介绍一些常用的参数:

1、-d/--delay=秒数

此选项指定 top 每次更新的时间间隔,默认为 5 秒。

2、-n/--iterations=次数

此选项指定 top 的更新次数,例如,top -n 3 将输出 top 的前三次更新结果。

3、-p/--pid=进程号

此选项指定 top 只显示指定进程 ID 的信息,进程 ID 以逗号分隔,例如,top -p 1234,5678 显示进程 ID 为 1234 和 5678 的进程信息。

四、top 命令的实战使用

在实际运维工作中,top 指令是非常常用的,下面我们以一些例子来介绍 top 在实战中的使用。

1、查看进程占用 CPU 资源最高的前 10 条记录

top -bn 1 -o %CPU | head -n 17

此命令将会输出 CPU 占用率最高的前 10 个进程。

2、实时监控某个进程的占用情况

top -p 进程ID -d 5

此命令将会每隔 5 秒刷新一次进程 ID 为指定ID的进程占用信息。

3、查看指定用户运行的进程

top -U 用户名

此命令将会输出用户名下的所有进程占用情况。

4、查看系统的负载情况

top -bn 1 | grep "load average:"

此命令将会输出系统的负载情况。

五、小结

top 指令是 Linux 系统下非常实用的性能监控工具,其可以帮助我们快速定位进程资源占用较高的原因,从而优化系统的运行。