你希望详细掌握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命令过滤排序的资料请关注代码网其它相关文章!
发表评论