一、什么是 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 系统下非常实用的性能监控工具,其可以帮助我们快速定位进程资源占用较高的原因,从而优化系统的运行。