ZhouChuang's Blog ZhouChuang's Blog
首页
  • 常用命令
  • 日常总结
  • Prometheus
  • 基础
  • 常用库
专题
  • 「编码」
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Zhou Chuang

为学日益 为道日损
首页
  • 常用命令
  • 日常总结
  • Prometheus
  • 基础
  • 常用库
专题
  • 「编码」
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Linux 命令

    • 进程管理

      • ps、pstree、pgrep 命令详解
      • top 命令介绍
        • 命令详解
          • 语法格式:
          • 常用命令参数:
          • 实际应用场景:
          • 交互式命令
          • 基本操作
          • 排序与显示调整
          • 进程管理
          • 刷新与过滤
          • 界面调整
          • 实际应用示例
        • 结果分析
          • 系统概况
          • 进程列表
          • 可选列
        • 其他 ”top“
    • 磁盘与文件管理

    • 信息显示与文件搜索

  • 日常的总结

  • Prometheus 技术栈

  • 运维
  • Linux 命令
  • 进程管理
ZhouChuang
2025-04-08
目录
命令详解
语法格式:
常用命令参数:
实际应用场景:
交互式命令
基本操作
排序与显示调整
进程管理
刷新与过滤
界面调整
实际应用示例
结果分析
系统概况
进程列表
可选列
其他 ”top“

top 命令介绍

top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况。该命令可以按照CPU的使用、内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。

# 命令详解

# 语法格式:

top [option]
1

# 常用命令参数:

参数选项 说明
-b 以批处理模式操作
-c 显示完整的命令路径
-d top默认3秒刷新一次,-d 用于设置界面的刷新间隔时间(以秒为单位),可接受小数。(例:top -d 0.5)
-i 隐藏空闲进程,只显示有资源消耗的进程(CPU 使用率非 0),减少屏幕杂乱。
-n 次数 指定刷新次数后退出。在非交互模式下运行 top,刷新指定次数后自动退出,常用于脚本或日志收集。
-p PID[,PID...] 只显示指定 PID 的进程,适合聚焦某个或某些进程。可监控多进程。
-u 用户名或-u UID 过滤特定用户的进程,减少无关信息。
-o 字段 按指定字段排序,启动时指定按某个字段(如 %CPU、 %MEM)排序进程列表。
-w [宽度] 调整输出宽度,适合宽终端或需要更多列信息。

# 实际应用场景:

  • 排查高CPU占用:

    top -o %CPU
    
    1

    其他常用字段:%CPU、 %MEM、 TIME、 PID 等。

  • 监控特定用户进程:

    top -u sms -c
    
    1

​ 查看用户 sms 的进程,并显示完整命令行。

  • 脚本中收集数据

    top -b -n 1 -u root > root_processes.log
    
    1

    记录 root 用户的进程信息到日志文件,运行一次后退出。

  • 高频监控特定进程:

    top -d 0.5 -p 1234
    
    1

    每 0.5 秒监控 PID 为 1234 的进程状态。

补充:

  • 交互性:许多选项的功能也可以在 top 运行时通过交互键实现。例如,按 u 过滤用户,按 f 调整字段,按 k 杀死进程。

  • 组合使用:选项可以组合使用,但要注意兼容性。例如,-b(批处理模式)不适合交互操作。

  • 性能影响:高频刷新(如 -d 0.1)或监控大量进程可能增加系统负载,需谨慎使用。

# 交互式命令

交互式命令就是在top命令执行过程中使用的一些命令。用户可以通过按键动态调整显示内容、管理进程或更改监控行为。这些交互式命令极大增强了 top 的灵活性,使其成为强大的实时监控工具。以下是 top 的常用交互式命令及其功能介绍:

# 基本操作

  1. q:退出 top
    • 功能:结束 top 的运行,返回终端。
    • 示例:按 q 后立即退出。
  2. h 或 ?:显示帮助
    • 功能:弹出帮助窗口,列出所有可用交互命令及其说明。
    • 示例:按 h,查看命令列表后按 q 返回主界面。
  3. 空格键:立即刷新
    • 功能:不等待默认刷新间隔,手动强制更新一次数据。
    • 示例:按 空格,界面立刻刷新。

# 排序与显示调整

  1. Shift + P:按 CPU 使用率排序
    • 功能:进程列表按 %CPU 列从高到低排序。
    • 示例:按 Shift + P,快速找到 CPU 占用最高的进程。
  2. Shift + M:按内存使用率排序
    • 功能:进程列表按 %MEM 列从高到低排序。
    • 示例:按 Shift + M,排查内存占用大的进程。
  3. Shift + T:按累计运行时间排序
    • 功能:按 TIME+ 列排序,显示运行时间最长的进程。
    • 示例:按 Shift + T,查看哪些进程运行时间最久。
  4. f:字段管理
    • 功能:进入字段管理模式,选择显示的列或调整排序字段。
    • 操作:
      • 按 f 后,用上下箭头选择字段。
      • 按 d 切换字段显示/隐藏。
      • 按 s 设置排序字段。
      • 按 Enter 保存并返回。
    • 示例:按 f,选中 VIRT,按 s 设为排序字段,查看虚拟内存使用量排序。
  5. c:切换命令行显示模式
    • 功能:在 COMMAND 列切换显示完整命令行或仅程序名。
    • 示例:按 c,从 python3 切换到 /usr/bin/python3 script.py。
  6. i:切换显示空闲进程
    • 功能:隐藏或显示空闲进程(CPU 使用率为 0 的进程)。
    • 示例:按 i,只显示有资源消耗的进程,再按一次恢复。
  7. 1:切换 CPU 显示模式
    • 功能:在总 CPU 使用率和每个 CPU 核心的单独使用率之间切换。
    • 示例:按 1,显示每个 CPU 核心的详细使用情况(如 4 核 CPU 会显示 4 行)。

# 进程管理

  1. k:杀死进程

    功能:输入 PID 后终止指定进程。

    操作:

    • 按 k,提示输入 PID。
    • 输入目标进程的 PID(如 1234),回车。
    • 默认发送 SIGTERM(15),可输入其他信号编号(如 9 表示 SIGKILL)。

    示例:按 k,输入 1234,终止 PID 为 1234 的进程。

  2. r:调整进程优先级(renice)

    • 功能:修改某个进程的 nice 值,影响其调度优先级。
    • 操作:
      • 按 r,提示输入 PID。
      • 输入 PID 后,再输入新的 nice 值(-20 到 19,负值优先级更高)。
    • 示例:按 r,输入 1234,再输入 -5,提高 PID 1234 的优先级。
    • 注意:需要足够权限(通常 root)才能调高优先级。

# 刷新与过滤

  1. d 或 s:修改刷新间隔
    • 功能:动态调整数据刷新间隔。
    • 操作:
      • 按 d 或 s,提示输入秒数。
      • 输入新间隔(如 1 或 0.5),回车确认。
    • 示例:按 d,输入 2,将刷新间隔改为 2 秒。
  2. u:按用户过滤进程
    • 功能:只显示指定用户的进程。
    • 操作:
      • 按 u,提示输入用户名。
      • 输入用户名(如 root 或留空显示所有),回车。
    • 示例:按 u,输入 alice,只显示用户 alice 的进程。
  3. n:限制显示进程数量
    • 功能:设置显示的最大进程数。
    • 操作:
      • 按 n,提示输入数量。
      • 输入数字(如 10),回车。
    • 示例:按 n,输入 5,只显示前 5 个进程。

# 界面调整

  1. l:切换负载平均值显示
    • 功能:显示或隐藏顶部第一行(时间、运行时间、负载平均值)。
    • 示例:按 l,隐藏负载信息,再按一次恢复。
  2. t:切换任务和 CPU 显示
    • 功能:显示或隐藏任务统计(Tasks)和 CPU 使用率行。
    • 示例:按 t,循环切换显示模式(完整、简略、隐藏)。
  3. m:切换内存显示
    • 功能:显示或隐藏内存和交换分区信息。
    • 示例:按 m,循环切换显示模式(完整、简略、隐藏)。
  4. z:切换彩色显示
    • 功能:启用或禁用彩色高亮显示。
    • 示例:按 z,界面变为彩色,再按一次恢复黑白。
  5. Shift + W:保存配置
    • 功能:将当前的显示设置(如排序、字段选择)保存到 ~/.toprc 文件,下次启动时自动应用。
    • 示例:调整好排序和字段后,按 Shift + W 保存。

# 实际应用示例

  • 快速杀掉高 CPU 进程:

    1. 按 Shift + P 排序,找到 CPU 占用最高的 PID(例如 1234)。
    2. 按 k,输入 1234,回车终止。
  • 调整刷新并过滤用户:

    1. 按 d,输入 1,设置 1 秒刷新。
    2. 按 u,输入 root,只看 root 的进程。
  • 自定义显示字段:

    1. 按 f,用箭头移到 RES(物理内存),按 d 启用。
    2. 按 s 将其设为排序字段,Enter 保存。
  • 字段排序(交互)例子:

    1. 按 b 和 x,如图:

      • b (Bold) - 用于突出显示排序的列 (可以理解为Bold)
      • x 选项会突出显示当前排序的列,使你更容易识别哪个字段正在影响进程的排序。

      b和x

    2. 按 z 和 x,得到下图:

      z和x

    3. 通过 > 或 < 可以向右或向左改变排序列

      >和<

      > 和 < 键提供了一种便捷的方式,在 top 运行时动态地切换排序字段,让你能够从不同的角度观察进程的资源使用情况。

# 结果分析

top 命令运行时,其输出分为两部分:上半部分的系统概况和下半部分的进程列表。

# 系统概况

image-20250408151742165

进程列表上方是系统概况,通常有 5 行,内容如下:

  1. 第一行:系统总体信息
    • 示例:top - 14:30:25 up 1 day, 2:15, 3 users, load average: 0.25, 0.30, 0.35
    • 含义:
      • 14:30:25:当前时间。
      • up 1 day, 2:15:系统运行时间(1 天 2 小时 15 分)。
      • 3 users:当前登录用户数。
      • load average: 0.25, 0.30, 0.35:过去 1、5、15 分钟的系统负载平均值。
  2. 第二行:任务统计
    • 示例:Tasks: 150 total, 2 running, 148 sleeping, 0 stopped, 0 zombie
    • 含义:
      • 150 total:进程总数。
      • 2 running:运行中的进程数。
      • 148 sleeping:睡眠中的进程数。
      • 0 stopped:停止的进程数。
      • 0 zombie:僵尸进程数。
  3. 第三行:CPU 使用率
    • 示例:%Cpu(s): 10.0 us, 5.0 sy, 0.0 ni, 85.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
    • 含义:
      • 10.0 us:用户进程占用 CPU 的百分比。
      • 5.0 sy:系统(内核)占用 CPU 的百分比。
      • 0.0 ni:低优先级用户进程(nice)占用。
      • 85.0 id:空闲 CPU 百分比。
      • 0.0 wa:等待 I/O 的 CPU 时间。
      • 0.0 hi:硬中断占用。
      • 0.0 si:软中断占用。
      • 0.0 st:虚拟化偷取时间(若运行在虚拟机中)。
  4. 第四行:物理内存使用
    • 示例:MiB Mem : 8000.0 total, 2000.0 free, 5000.0 used, 1000.0 buff/cache
    • 含义:
      • 8000.0 total:总物理内存(MB)。
      • 2000.0 free:空闲内存。
      • 5000.0 used:已用内存。
      • 1000.0 buff/cache:缓冲区和缓存占用。
  5. 第五行:交换分区使用
    • 示例:MiB Swap: 2048.0 total, 2048.0 free, 0.0 used
    • 含义:
      • 2048.0 total:总交换分区大小。
      • 2048.0 free:空闲交换空间。
      • 0.0 used:已用交换空间。

# 进程列表

以下是默认视图中常见的列,从左到右逐一说明:

  1. PID:进程 ID

    • 含义:系统分配给进程的唯一标识号。
    • 示例:1234 表示某个进程的 ID。
  2. USER:运行进程的用户

    • 含义:启动该进程的用户名或 UID。
    • 示例:root、alice。
  3. PR:优先级(Priority)

    • 含义:进程的调度优先级,值越低优先级越高(由内核决定)。

    • 示例:20(普通进程)、0(较高优先级)、rt(实时进程)。

    • 用途:反映进程被 CPU 调度的顺序。

  4. NI:Nice 值

    • 含义:用户设置的进程优先级调整值,范围 -20(最高)到 19(最低)。
    • 示例:0(默认)、-10(高优先级)。
    • 用途:影响 PR,用户可通过 renice 或 r 键调整。
  5. VIRT:虚拟内存使用量(Virtual Memory)

    • 含义:进程占用的总虚拟内存(单位通常为 KB),包括代码、数据和共享库。
    • 用途:评估进程的内存需求。
  6. RES:物理内存使用量(Resident Memory)

    • 含义:进程实际占用的物理内存(未交换到磁盘的部分)。
    • 用途:反映进程当前的真实内存占用。
  7. SHR:共享内存使用量(Shared Memory)

    • 含义:进程与其他进程共享的内存量(如共享库)。
    • 用途:了解内存的共享程度。
  8. S:进程状态(State)

    • 含义:当前进程的状态。
    • 常见值:
      • R:运行中(Running)。
      • S:可中断睡眠(Sleeping)。
      • D:不可中断睡眠(通常等待 I/O)。
      • Z:僵尸进程(Zombie)。
      • T:停止(Traced or Stopped)。
    • 示例:R 表示进程正在使用 CPU。
    • 用途:判断进程是否活跃或异常。
  9. %CPU:CPU 使用率

    • 含义:进程占用 CPU 的百分比(相对于单核,100% 表示占满一个核心)。
    • 示例:25.0(占用 25% 的 CPU 时间)。
  10. %MEM:内存使用率

    • 含义:进程占用物理内存的百分比(相对于系统总内存)。
    • 示例:1.5(占总内存的 1.5%)。
  11. TIME+:累计 CPU 时间

    • 含义:进程自启动以来累计使用的 CPU 时间(格式通常为 分钟:秒)。
    • 示例:10:25(10 分 25 秒)。
    • 用途:判断进程运行的持续性和资源消耗。
  12. COMMAND:命令或程序名

    • 含义:启动进程的命令或可执行文件名(按 c 可切换为完整命令行)。

# 可选列

通过按 f 键进入字段管理,可以添加或调整更多列,例如:

  • PPID:父进程 ID。
  • UID:用户 ID。
  • GROUP:进程所属用户组。
  • SWAP:进程使用的交换分区大小。
  • CODE:代码段大小。
  • DATA:数据段大小。

提示

top 默认的单位为kb,怎么修改呢?

  1. 按下 E (大写 E): 这会循环切换系统概况区域的内存单位。 单位会依次变为 KB, MB, GB, TB, PB, EB。

  2. 按下 e (小写 e): 这会循环切换进程区域的内存单位。 同样地,单位会依次变为 KB, MB, GB, TB, PB, EB。

# 其他 ”top“

top 是一个广为人知的进程监控工具,但它并不是唯一的选项。下面这些工具可以看作是 top 的替代品或增强版,通常提供更友好的界面、更详细的数据或不同的使用方式。

  1. htop

    • 简介:htop 是 top 的一个增强版,提供更直观的彩色界面和更方便的交互操作。

    • 特点:

      • 彩色显示,默认按 CPU、内存等高亮。

      • 支持鼠标操作(例如点击选择进程)。

      • 内置搜索(按 F3)和过滤(按 F4)。

      • 可视化进程树(按 F5)。

      • 直接支持杀死进程(按 F9)和调整优先级。

    • 与 top 的区别:界面更友好,操作更直观,默认显示更丰富的信息。

    • 适用场景:日常监控、需要快速操作时。

    htop

  2. atop

    • 简介:atop 是一个高级性能监控工具,不仅显示进程,还记录磁盘、网络等资源的使用情况。

    • 特点:

      • 支持长期监控,数据可保存到日志文件。
      • 显示 CPU、内存、磁盘 I/O、网络 I/O 等详细统计。
      • 按时间间隔(如每 10 秒)记录快照。
      • 支持回放历史数据(使用 atop -r)。
    • 与 top 的区别:更注重系统资源的全方位分析,适合性能调优和问题排查。

    • 适用场景:需要深入分析系统瓶颈或长期记录数据时。

      atop

  3. ps (结合 watch)

    • 简介:ps 不是实时监控工具,但结合 watch 可以实现类似 top 的动态效果。

    • 例如:

      watch -n 1 "ps aux --sort=-%cpu"
      
      1
      • -n 1:每 1 秒刷新。

      • aux:显示所有用户进程。

      • --sort=-%cpu:按 CPU 使用率降序排序。

  4. btop

    • 简介:btop 是一个现代化的资源监控工具,基于 C++ 开发,提供美观的终端界面。

    • 特点:

      • 类似 htop,但界面更精美,支持主题。

      • 显示 CPU、内存、磁盘、网络的图形化统计。

      • 支持鼠标操作和键盘快捷键。

    • 与 top 的区别:界面更现代化,视觉效果更好。

    • 适用场景:追求美观和直观体验的用户。

      btop

#top
上次更新: 2025/05/06, 13:52:56
ps、pstree、pgrep 命令详解
交换分区的配置

← ps、pstree、pgrep 命令详解 交换分区的配置→

最近更新
01
find 命令介绍
05-06
02
交换分区的配置
04-09
03
日志库 Zap
03-30
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Zhou Chuang 版权所有| 鲁ICP备2021031629号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式