Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux top命令过滤排序

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                                                                 

二、top排序功能(核心)

排序是top最常用的功能,分为交互模式排序(运行中操作)和命令行参数排序(启动时指定),新手优先掌握交互模式。

1. 交互模式快速排序(运行top后操作)

运行top后,直接按以下快捷键即可实时排序,无需重启命令:

快捷键排序规则适用场景
PCPU使用率降序(默认)找CPU占用最高的进程
M内存使用率降序找内存占用最高的进程(最常用)
T累计CPU时间(TIME+) 降序找长期占用CPU的进程
NPID降序按进程ID排序
R反转当前排序(升序↔降序)想看占用最低的进程时使用
< / >切换排序列自定义按其他列(如USER)排序

示例

2. 命令行参数排序(启动时指定)

如果想启动top就按指定列排序,用-o参数(CentOS 7的top原生支持),格式:

top -o 列名

常用列名:%CPU%MEMPIDTIME+USER(列名需和top界面显示一致)。

示例

# 启动top时直接按内存使用率降序排序
top -o %MEM

# 启动top时按PID升序排序(加负号表示升序)
top -o -PID

# 启动top时按累计CPU时间降序排序
top -o TIME+

三、top过滤功能(精准筛选进程)

过滤能只显示符合条件的进程,避免无关进程干扰,分为交互模式过滤命令行参数过滤

1. 交互模式过滤(运行top后操作)

(1) 按用户过滤(最常用):按u键

操作步骤:

  1. 运行top
  2. u键,界面底部提示Which user (blank for all)
  3. 输入要过滤的用户名(如rootnginxmysql),回车;
    • 若直接回车,取消用户过滤,显示所有用户进程。

示例
u → 输入nginx → 回车,仅显示nginx用户的所有进程,快速排查nginx进程的资源占用。

(2) 按进程名/自定义条件过滤:按o键

操作步骤:

  1. 运行top
  2. o键,界面提示Add filter expression
  3. 输入过滤条件(格式:列名=值/列名>值,支持通配符*);
  4. 回车生效。

常用过滤条件示例

(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

四、实用补充技巧

  1. 调整刷新频率:默认3秒刷新一次,按s键修改(如输入1则1秒刷新),或启动时用top -d 1
  2. 显示单CPU核心使用率:按数字1,从“总CPU使用率”切换为“每个核心的使用率”;
  3. 只显示活跃进程:按i键,隐藏闲置(sleeping)进程,减少干扰;
  4. 退出top:按q键(或Ctrl+C)。

总结

  1. 排序核心:交互模式按P/M/T快速按CPU/内存/累计时间排序,启动时用top -o 列名指定排序列(加负号为升序);
  2. 过滤核心:按u过滤用户、按o设置自定义过滤条件(如COMMAND=nginx),启动时用-u(用户)/-p(PID)过滤;
  3. 实用技巧:按1看单CPU核心使用率,按=清除过滤,按q退出top。

以上就是Linux使用top命令过滤排序的方法详解的详细内容,更多关于Linux top命令过滤排序的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文