Linux top 命令使用说明

文章目录

  • [Linux top 命令使用说明](#Linux top 命令使用说明)
    • 简介
    • 基本语法
    • 命令选项
    • 输出字段解释
    • 交互命令
    • 使用示例
      • [1. 基本使用](#1. 基本使用)
      • [2. 设置刷新间隔](#2. 设置刷新间隔)
      • [3. 显示指定进程](#3. 显示指定进程)
      • [4. 显示指定用户的进程](#4. 显示指定用户的进程)
      • [5. 显示完整命令行](#5. 显示完整命令行)
      • [6. 批处理模式输出](#6. 批处理模式输出)
      • [7. 按内存使用率排序](#7. 按内存使用率排序)
      • [8. 显示线程信息](#8. 显示线程信息)
      • [9. 显示单个 CPU 核心信息](#9. 显示单个 CPU 核心信息)
      • [10. 自定义显示字段](#10. 自定义显示字段)
    • 高级用法
      • [1. 实时监控特定进程资源](#1. 实时监控特定进程资源)
      • [2. 导出 top 数据到文件并分析](#2. 导出 top 数据到文件并分析)
      • [3. 监控多核 CPU 负载](#3. 监控多核 CPU 负载)
      • [4. 高亮显示当前运行的进程](#4. 高亮显示当前运行的进程)
      • [5. 调整进程优先级](#5. 调整进程优先级)
    • 注意事项
    • 相关命令对比

Linux top 命令使用说明

简介

top 命令是 Linux 系统中常用的性能分析工具,能够实时动态地显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。它可以帮助用户监视系统的 CPU、内存使用情况,以及各个进程的运行状态,是系统管理员必备的工具之一。

基本语法

bash 复制代码
# 基本使用
$ top

# 带选项使用
$ top [选项]

命令选项

选项 描述 示例
-d <秒数> 指定每两次屏幕刷新之间的时间间隔 top -d 2
-p <PID> 显示指定 PID 的进程信息 top -p 1234
-H 线程模式,显示进程中的线程 top -H -p 1234
-c 显示完整命令行而不只是命令名 top -c
-i 忽略闲置和僵死进程 top -i
-u <用户名> 显示指定用户的进程 top -u root
-n <次数> 设置循环显示的次数 top -n 5
-o <字段> 按照指定字段排序 top -o %CPU
-w <列数> 设置屏幕宽度 top -w 200
-b 批处理模式,非交互式 top -b -n 1 > top_output.txt
-S 累积模式,显示每个进程的累积 CPU 时间 top -S
-1 显示每个逻辑 CPU 的详细信息 top -1
-h/-v 显示帮助信息 top -h

输出字段解释

系统概览区域

top 命令的输出分为三个部分:系统概览区域、进程表头和进程列表。以下是系统概览区域的解释:

  1. 第一行(运行时间和平均负载)

    复制代码
    top - 16:52:51 up 5:37,  2 users,  load average: 0.31, 0.42, 0.33
    • 16:52:51: 当前系统时间
    • up 5:37: 系统已运行时间
    • 2 users: 当前登录用户数量
    • load average: 0.31, 0.42, 0.33: 系统在过去 1 分钟、5 分钟、15 分钟的平均负载
  2. 第二行(任务/进程统计)

    复制代码
    Tasks: 85 total,   1 running,  84 sleeping,   0 stopped,   0 zombie
    • 85 total: 总进程数
    • 1 running: 正在运行的进程数
    • 84 sleeping: 睡眠状态的进程数
    • 0 stopped: 已停止的进程数
    • 0 zombie: 僵尸进程数
  3. 第三行(CPU 状态)

    复制代码
    %Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
    • 0.3 us: 用户空间 CPU 使用率
    • 0.3 sy: 系统空间 CPU 使用率
    • 0.0 ni: 优先级调整过的进程 CPU 使用率
    • 99.0 id: 空闲 CPU 百分比
    • 0.0 wa: 等待 I/O 的 CPU 时间百分比
    • 0.0 hi: 硬件中断处理时间百分比
    • 0.3 si: 软件中断处理时间百分比
    • 0.0 st: 被虚拟机窃取的 CPU 时间百分比
  4. 第四行(内存使用)

    复制代码
    Mem:   1004136k total,   456464k used,   547672k free,    26492k buffers
    • 1004136k total: 物理内存总量
    • 456464k used: 已使用的物理内存
    • 547672k free: 空闲物理内存
    • 26492k buffers: 缓冲区使用的内存
  5. 第五行(交换分区使用)

    复制代码
    Swap:  1048572k total,        0k used,  1048572k free,   214520k cached
    • 1048572k total: 交换分区总量
    • 0k used: 已使用的交换分区
    • 1048572k free: 空闲交换分区
    • 214520k cached: 缓存的交换分区

进程列表字段

字段 描述
PID 进程 ID
USER 进程所属用户
PR 进程优先级
NI 进程nice值(优先级调整值)
VIRT 进程使用的虚拟内存总量(KB)
RES 进程使用的物理内存总量(KB)
SHR 进程使用的共享内存总量(KB)
S 进程状态(R:运行, S:睡眠, T:停止, Z:僵尸, D:不可中断睡眠)
%CPU 进程占用的 CPU 百分比
%MEM 进程占用的内存百分比
TIME+ 进程累计使用的 CPU 时间
COMMAND 进程命令名称或完整命令行

交互命令

top 命令运行过程中,可以使用以下交互式命令进行操作:

命令 描述
h/? 显示帮助信息
q 退出 top 命令
k 终止指定 PID 的进程
r 重新设置进程的优先级(nice值)
s 改变屏幕刷新间隔时间
l 切换是否显示平均负载和启动时间
t 切换是否显示进程和 CPU 状态信息
m 切换是否显示内存信息
c 切换是否显示完整命令行
i 切换是否显示闲置和僵死进程
M 按内存使用率排序
P 按 CPU 使用率排序
T 按累计 CPU 时间排序
N 按 PID 排序
F/f 添加或删除显示字段
O/o 改变字段显示顺序
W 保存当前设置到配置文件 ~/.toprc
1 显示/隐藏单个 CPU 核心信息
E 切换内存显示单位(KiB 到 EiB)
H 切换线程模式
> 向右移动排序列
< 向左移动排序列
R 反向排序当前列

使用示例

1. 基本使用

bash 复制代码
# 启动 top 命令
$ top

2. 设置刷新间隔

bash 复制代码
# 每 2 秒刷新一次
$ top -d 2

3. 显示指定进程

bash 复制代码
# 显示 PID 为 1234 的进程
$ top -p 1234

4. 显示指定用户的进程

bash 复制代码
# 显示 root 用户的进程
$ top -u root

5. 显示完整命令行

bash 复制代码
# 显示进程的完整命令行
$ top -c

6. 批处理模式输出

bash 复制代码
# 输出一次 top 信息到文件
$ top -b -n 1 > top_output.txt

7. 按内存使用率排序

bash 复制代码
# 启动 top 后按 M 键
$ top
# 然后按 M 键

8. 显示线程信息

bash 复制代码
# 显示进程的线程信息
$ top -H -p 1234

9. 显示单个 CPU 核心信息

bash 复制代码
# 启动 top 后按 1 键
$ top
# 然后按 1 键

10. 自定义显示字段

bash 复制代码
# 启动 top 后按 f 键,然后选择要显示的字段
$ top
# 然后按 f 键

高级用法

1. 实时监控特定进程资源

bash 复制代码
# 结合 watch 命令监控特定进程
$ watch -n 1 'top -b -n 1 -p 1234 | tail -n 1'

2. 导出 top 数据到文件并分析

bash 复制代码
# 导出 10 次 top 数据
$ top -b -n 10 > top_data.txt
# 使用 grep 和 awk 分析数据
$ grep 'nginx' top_data.txt | awk '{print $9, $10}'

3. 监控多核 CPU 负载

bash 复制代码
# 启动 top 后按 1 键查看每个核心的负载
$ top
# 然后按 1 键

4. 高亮显示当前运行的进程

bash 复制代码
# 在 top 交互模式下按 x 键
$ top
# 然后按 x 键

5. 调整进程优先级

bash 复制代码
# 在 top 交互模式下按 r 键,然后输入进程 PID 和新的 nice 值
$ top
# 然后按 r 键,输入 PID,再输入 nice 值(范围 -20 到 19)

注意事项

  1. top 命令默认按 CPU 使用率排序,按 M 键可切换到按内存使用率排序。
  2. 系统平均负载值如果持续大于 CPU 核心数的 0.7 倍,可能表示系统负载过高。
  3. 僵尸进程(Z 状态)通常不需要手动处理,系统会自动回收。如果大量出现,可能是父进程存在问题。
  4. 高 CPU 或内存占用的进程可能是性能瓶颈或异常进程,需要进一步分析。
  5. top 命令的输出可能因 Linux 发行版不同而略有差异,具体以实际系统为准。
  6. 使用 W 命令可以保存当前设置到 ~/.toprc 文件,下次启动时自动加载。

相关命令对比

命令 功能 特点
top 实时监控进程资源 动态更新,交互式操作
ps 查看进程静态快照 一次性显示当前进程状态
htop 增强版进程监控工具 界面更友好,支持鼠标操作
atop 高级系统和进程监控 提供更详细的系统资源信息
glances 跨平台系统监控工具 支持多种输出格式,功能全面
相关推荐
未来之窗软件服务2 小时前
服务器运维(十一)SQLite3 php封装——东方仙盟炼气期
运维·服务器·sqlite·服务器运维·数据库驱动·东方仙盟
QT 小鲜肉2 小时前
【QT/C++】Qt样式设置之CSS知识(系统性概括)
linux·开发语言·css·c++·笔记·qt
yachuan_qiao2 小时前
专业的建筑设备监控管理系统选哪家
大数据·运维·python
Elias不吃糖3 小时前
NebulaChat 框架学习笔记:深入理解 Reactor 与多线程同步机制
linux·c++·笔记·多线程
洋哥网络科技3 小时前
centos 7.9搭建安装confluence7
linux·centos·知识图谱
占疏3 小时前
访问日志查询功能
java·服务器·flask
李昊哲小课3 小时前
Ubuntu 24.04 安装开源WebRTC信令服务器
服务器·ubuntu·mediasoup·janus·信令服务器
这个人需要休息3 小时前
TCP/IP 协议栈
服务器·网络·网络协议·tcp/ip
LCG元3 小时前
Docker 入门实战:用10个案例带你玩转容器化
linux
kkce3 小时前
快快测(KKCE)TCping 检测全面升级:IPv6 深度覆盖 + 多维度可视化,重构网络性能监测新体验
服务器·网络·重构