Linux-top

Linux-top

  • top
    • 1、作用
    • 2、格式
    • 3、参数
      • [a、 top 启动参数(命令行直接传入)](#a、 top 启动参数(命令行直接传入))
      • [b、 top 交互指令(运行中按键生效)](#b、 top 交互指令(运行中按键生效))
        • [1. 排序相关指令(核心:按资源类型排序)](#1. 排序相关指令(核心:按资源类型排序))
        • [2. 筛选/显示相关指令](#2. 筛选/显示相关指令)
        • [3. 控制相关指令](#3. 控制相关指令)
    • [4、 top 界面核心字段解读](#4、 top 界面核心字段解读)
      • [a. 系统概览区(前 5 行)](#a. 系统概览区(前 5 行))
      • [b. 进程列表区(重点内存/CPU 字段)](#b. 进程列表区(重点内存/CPU 字段))
  • 使用场景
    • [1、 **每秒刷新,监控指定进程**](#1、 每秒刷新,监控指定进程)
    • [2、 **显示完整命令,监控 nginx 用户进程**](#2、 显示完整命令,监控 nginx 用户进程)
    • [3、 **批处理模式,保存 10 次监控数据到文件**](#3、 批处理模式,保存 10 次监控数据到文件)
    • [4、 **监控进程的所有线程**](#4、 监控进程的所有线程)

top

1、作用

top 是 Linux 系统中实时监控进程和系统资源 的核心工具,支持通过启动参数 (命令行传入)和交互指令 (运行中按键)调整监控维度,适用于排查 CPU/内存占用、进程异常等场景。以下是 启动参数交互指令 的详细说明,按功能分类整理:

2、格式

bash 复制代码
top [参数]

3、参数

a、 top 启动参数(命令行直接传入)

启动参数用于设置 top 的初始监控状态,格式为 top [参数],常用参数如下:

参数 作用 实用场景
-d <秒数> 设置刷新间隔(默认 3 秒),例如 top -d 1 表示每秒刷新一次 快速监控资源波动(如排查突发 CPU 占用)
-p <PID1,PID2...> 只监控指定 PID 的进程,多个 PID 用逗号分隔,例如 top -p 1234,5678 聚焦单个/多个进程的资源变化(如排查特定服务内存泄漏)
-u <用户名> 只监控指定用户的进程,例如 top -u nginx 排查某用户的进程是否占用过高资源
-c 显示进程的完整命令行 (默认只显示命令名),例如 java -jar app.jar 而非 java 区分同名进程(如多个 python 脚本)
-b 批处理模式 ,输出结果可重定向到文件(非交互式),常配合 -n 使用 记录资源监控数据(如 top -b -n 10 > top.log 保存 10 次输出)
-n <次数> 设置批处理模式下的输出次数,例如 top -b -n 5 表示输出 5 次后退出 定时采集资源数据,用于后续分析
-H 显示线程级监控,将进程的子线程单独列出 排查多线程程序的线程资源占用(如某线程 CPU 100%)
-i 忽略空闲进程(CPU 使用率为 0 的进程),只显示活跃进程 快速定位消耗资源的进程,减少输出冗余

b、 top 交互指令(运行中按键生效)

启动 top 后进入交互式界面,通过按键可动态调整监控维度,无需重启命令,这是 top 最灵活的用法。

1. 排序相关指令(核心:按资源类型排序)
按键 作用 实用场景
P(大写) CPU 使用率 倒序排序(默认排序方式) 定位 CPU 占用最高的进程
M(大写) 内存使用率 倒序排序 定位内存占用最高的进程(最常用)
T(大写) 累计 CPU 时间 倒序排序 查看进程启动以来的总 CPU 消耗
N(大写) PID 编号 倒序排序 按进程 ID 查找特定进程
R(大写) 切换升序/倒序排序(当前排序的反向) 查看资源占用最低的进程
2. 筛选/显示相关指令
按键 作用 实用场景
u 输入用户名,筛选该用户的进程 只监控某用户的进程(如 root/mysql
k 输入 PID,终止指定进程(需确认信号值,默认 15 优雅终止,9 强制杀死) 快速终止异常高资源进程(谨慎使用)
c 切换命令名/完整命令行 显示(与启动参数 -c 效果一致) 区分同名进程的具体执行参数
i 切换显示/隐藏空闲进程 (与启动参数 -i 效果一致) 过滤无资源消耗的空闲进程
H 切换进程/线程 视图(与启动参数 -H 效果一致) 查看进程的子线程资源占用
f 进入字段管理界面 ,自定义显示的列(如添加内存字段 SWAP 按需显示关键指标,隐藏冗余列
o 进入列排序界面,调整列的显示顺序 把关注的列(如 %MEM)移到前面
3. 控制相关指令
按键 作用 实用场景
s 修改刷新间隔(输入秒数,如 1 表示每秒刷新) 调整监控实时性(数值越小越灵敏)
空格 强制立即刷新当前界面 手动触发刷新,查看最新资源状态
W 保存当前 top 配置(排序、显示列等)到 ~/.toprc 下次启动 top 直接使用自定义配置
q 退出 top 界面 结束监控

4、 top 界面核心字段解读

启动 top 后,界面分为 系统概览区进程列表区,重点关注以下字段:

a. 系统概览区(前 5 行)

复制代码
top - 10:00:00 up 10 days,  2:00,  2 users,  load average: 0.50, 0.30, 0.20
Tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.0 us,  2.0 sy,  0.0 ni, 92.0 id,  0.0 bl,  0.0 wd,  0.0 hi,  0.0 si
MiB Mem :   7856 total,   1024 free,   3072 used,   3760 buff/cache
MiB Swap:   2048 total,   1800 free,    248 used.   4000 available Mem
字段 含义
load average: 0.50, 0.30, 0.20 系统 1/5/15 分钟平均负载(CPU 任务队列长度)
%Cpu(s): us/sy/id us=用户态 CPU 占比,sy=内核态 CPU 占比,id=空闲 CPU 占比
Mem: total/used/free/buff/cache 物理内存的总容量/已用/空闲/缓存占用
Swap: total/used/free 交换分区的总容量/已用/空闲
available Mem 程序实际可申请的内存(核心指标,比 free 更有参考价值)

b. 进程列表区(重点内存/CPU 字段)

字段 含义 参考价值
PID 进程 ID 唯一标识进程
USER 进程所属用户 排查用户进程资源占用
%CPU 进程当前 CPU 使用率 实时 CPU 消耗指标
%MEM 进程当前内存使用率 实时内存消耗指标(核心)
RES 进程占用的物理内存(单位 KB/MB) 真实物理内存占用(同 psRSS
VIRT 进程占用的虚拟内存 参考价值低(包含未使用内存)
SHR 进程共享的内存大小 辅助判断(共享库占用,非独占内存)
COMMAND 进程命令名/完整命令行 识别进程用途

使用场景

1、 每秒刷新,监控指定进程

bash 复制代码
    top -d 1 -p 1234  # 每秒刷新,只看 PID=1234 的进程

2、 显示完整命令,监控 nginx 用户进程

bash 复制代码
    top -u nginx -c   # 只看 nginx 用户的进程,显示完整命令行

3、 批处理模式,保存 10 次监控数据到文件

bash 复制代码
    top -b -n 10 -d 2 > top_monitor.log  # 每 2 秒输出一次,共 10 次,保存到日志

4、 监控进程的所有线程

bash 复制代码
    top -H -p 1234  # 查看 PID=1234 进程下的所有线程资源占用
相关推荐
Bruce_Liuxiaowei2 小时前
Windows系统映像劫持:网络安全中的“李代桃僵”战术
windows·安全·web安全
fufu03112 小时前
Linux环境下的C语言编程(四十二)
linux·c语言·算法
Trouvaille ~2 小时前
【Linux】进程调度与环境变量:Linux内核的智慧
linux·运维·服务器·操作系统·进程·环境变量·调度算法
HalvmånEver2 小时前
Linux : 基础IO(三)
linux·运维·算法
oushaojun22 小时前
linux中backtrace实战
linux·运维·算法·backtrace
bleach-2 小时前
内网渗透之横向移动&持久化远程控制篇——利用ipc、sc、schtasks、AT,远程连接的winrm,wmic的使用和定时任务的创建
网络·windows·安全·web安全·网络安全·系统安全·安全威胁分析
soft20015252 小时前
MySQL 8.0.39 Rocky Linux 一键安装脚本(完整可直接运行)
linux·mysql·adb
Nerd Nirvana2 小时前
WSL——Windows Subsystem for Linux流程一览
linux·运维·服务器·windows·嵌入式·wsl·wsl2
JH30733 小时前
Java 是值传递:深入理解参数传递机制
java·开发语言·windows