Linux使用top命令过滤排序的方法详解
作者:liweiweili126
top是CentOS 7中最核心的系统监控工具,能实时显示进程的CPU、内存等资源占用,下面从基础界面、排序、过滤三个维度详解,重点聚焦你关注的排序和过滤功能,需要的朋友可以参考下
你希望详细掌握CentOS 7系统中top命令的使用方法,特别是其中的过滤和排序功能,以此精准监控系统进程的资源占用情况。
top是CentOS 7中最核心的系统监控工具,能实时显示进程的CPU、内存等资源占用,下面从基础界面、排序、过滤三个维度详解,重点聚焦你关注的排序和过滤功能。
一、先熟悉top基础界面
执行top命令后,界面分为两部分:
top - 10:23:45 up 7 days, 2:10, 1 user, load average: 0.10, 0.05, 0.01 Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8010240 total, 1234560 free, 2345670 used, 4429910 buff/cache KiB Swap: 8388604 total, 8388604 free, 0 used. 5234560 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1234 root 20 0 123456 12345 6789 S 5.0 0.2 0:10.23 nginx 5678 mysql 20 0 987654 876543 12345 S 2.0 10.9 1:20.34 mysqld
- 上部(系统概览):负载、进程总数、CPU/内存/交换分区使用率。
- 下部(进程列表):PID(进程ID)、USER(所属用户)、%CPU(CPU使用率)、%MEM(内存使用率)、COMMAND(进程名)等核心列。
二、top排序功能(核心)
排序是top最常用的功能,分为交互模式排序(运行中操作)和命令行参数排序(启动时指定),新手优先掌握交互模式。
1. 交互模式快速排序(运行top后操作)
运行top后,直接按以下快捷键即可实时排序,无需重启命令:
| 快捷键 | 排序规则 | 适用场景 |
|---|---|---|
| P | 按CPU使用率降序(默认) | 找CPU占用最高的进程 |
| M | 按内存使用率降序 | 找内存占用最高的进程(最常用) |
| T | 按累计CPU时间(TIME+) 降序 | 找长期占用CPU的进程 |
| N | 按PID降序 | 按进程ID排序 |
| R | 反转当前排序(升序↔降序) | 想看占用最低的进程时使用 |
| < / > | 切换排序列 | 自定义按其他列(如USER)排序 |
示例:
- 运行
top后按M,进程会立刻按内存使用率从高到低排列,能一眼定位内存“大户”(如mysql、java进程); - 按
R后,排序反转,变成内存使用率从低到高排列; - 按
>键,可切换到按TIME+列排序,再按R变成升序,能找到运行时间最短的进程。
2. 命令行参数排序(启动时指定)
如果想启动top就按指定列排序,用-o参数(CentOS 7的top原生支持),格式:
top -o 列名
常用列名:%CPU、%MEM、PID、TIME+、USER(列名需和top界面显示一致)。
示例:
# 启动top时直接按内存使用率降序排序 top -o %MEM # 启动top时按PID升序排序(加负号表示升序) top -o -PID # 启动top时按累计CPU时间降序排序 top -o TIME+
三、top过滤功能(精准筛选进程)
过滤能只显示符合条件的进程,避免无关进程干扰,分为交互模式过滤和命令行参数过滤。
1. 交互模式过滤(运行top后操作)
(1) 按用户过滤(最常用):按u键
操作步骤:
- 运行
top; - 按
u键,界面底部提示Which user (blank for all); - 输入要过滤的用户名(如
root、nginx、mysql),回车;- 若直接回车,取消用户过滤,显示所有用户进程。
示例:
按u → 输入nginx → 回车,仅显示nginx用户的所有进程,快速排查nginx进程的资源占用。
(2) 按进程名/自定义条件过滤:按o键
操作步骤:
- 运行
top; - 按
o键,界面提示Add filter expression; - 输入过滤条件(格式:列名=值/列名>值,支持通配符
*); - 回车生效。
常用过滤条件示例:
COMMAND=nginx:只显示进程名包含nginx的进程;%CPU>5:只显示CPU使用率超过5%的进程;%MEM>2:只显示内存使用率超过2%的进程;USER=mysql:等效于按u键过滤mysql用户(多一种方式)。
(3) 清除所有过滤条件:按=键
如果设置了多个过滤条件,想一键恢复显示所有进程,按=键即可。
2. 命令行参数过滤(启动时指定)
适合脚本/批量监控场景,启动top时直接指定过滤条件:
(1) 按用户过滤:-u参数
格式:top -u 用户名/UID
# 只显示nginx用户的进程 top -u nginx # 只显示UID为1000的用户进程(UID可通过id命令查询:id 用户名) top -u 1000
(2) 按PID过滤:-p参数
格式:top -p PID1,PID2,PID3(多个PID用逗号分隔,最多20个)
# 只监控PID为1234(nginx主进程)和5678(mysql进程)的进程 top -p 1234,5678
四、实用补充技巧
- 调整刷新频率:默认3秒刷新一次,按
s键修改(如输入1则1秒刷新),或启动时用top -d 1; - 显示单CPU核心使用率:按数字
1,从“总CPU使用率”切换为“每个核心的使用率”; - 只显示活跃进程:按
i键,隐藏闲置(sleeping)进程,减少干扰; - 退出top:按
q键(或Ctrl+C)。
总结
- 排序核心:交互模式按
P/M/T快速按CPU/内存/累计时间排序,启动时用top -o 列名指定排序列(加负号为升序); - 过滤核心:按
u过滤用户、按o设置自定义过滤条件(如COMMAND=nginx),启动时用-u(用户)/-p(PID)过滤; - 实用技巧:按
1看单CPU核心使用率,按=清除过滤,按q退出top。
以上就是Linux使用top命令过滤排序的方法详解的详细内容,更多关于Linux top命令过滤排序的资料请关注脚本之家其它相关文章!
