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 跨平台系统监控工具 支持多种输出格式,功能全面
相关推荐
YC运维3 小时前
Jenkins 安装,自动化全方位详解文档
运维·自动化·jenkins
半梦半醒*3 小时前
Jenkins流水线项目发布
运维·ci/cd·tomcat·jenkins·maven·运维开发
---学无止境---3 小时前
Linux中dcache和inode缓存回收函数的实现
linux
Мартин.3 小时前
[Meachines] [Hard] Pollution MyBB+Redis_session+PHP-Filter+PHP-FPM+prototype
linux
总有刁民想爱朕ha3 小时前
银河麒麟v10 Mysql8部署教程(小白版)
linux·mysql数据库备份
塔能物联运维3 小时前
物联网运维中的自适应网络拓扑重构技术
运维·物联网·重构
weixin_307779134 小时前
AWS云上Quickwit部署指南与成本分析
服务器·自动化·云计算·运维开发·aws
LCG元4 小时前
性能排查必看!当Linux服务器CPU/内存飙高,如何快速定位并"干掉"罪魁祸首进程?
linux·后端
路由侠内网穿透4 小时前
本地部署开源数据分析平台 Elastic Stack 并实现外部访问( Windows 版本)
运维·服务器·网络·windows·开源·jenkins