首页 > 服务器    日期:2026-08-19 / 浏览

top 是 Linux 系统中最常用的实时进程监控工具,动态显示系统中各个进程的资源使用情况,包括 CPU、内存、运行时间等。它类似于 Windows 的任务管理器,是系统管理和性能排查的基础工具。

快速参考

top [选项]

top 默认每 3 秒刷新一次,按 q 退出。掌握其交互快捷键(排序、过滤、杀进程等)能显著提升系统排障效率。

基本用法

# 启动 top
top

# 指定刷新间隔
top -d 2      # 每 2 秒刷新
top -d 0.5    # 每 0.5 秒刷新

# 监控指定 PID
top -p 1234
top -p 1234,5678,9012    # 多个 PID

# 监控指定用户的所有进程
top -u nginx
top -u www-data

# 批处理模式(不交互,输出到文件)
top -b -n 1 > top_output.txt
top -b -n 5 > top_history.txt    # 采样 5 次

# 只显示特定次数后退出
top -n 10          # 10 次后退出
top -d 1 -n 5      # 每秒刷新,5 次后退出

# 组合使用
top -d 2 -u www-data -b -n 3

理解输出信息

# top 输出头部信息:
# top - 14:30:25 up 10 days,  5:30,  2 users,  load average: 0.52, 0.38, 0.29
# Tasks: 587 total,   1 running, 586 sleeping,   0 stopped,   0 zombie
# %Cpu(s):  3.2 us,  1.0 sy,  0.0 ni, 95.5 id,  0.1 wa,  0.0 hi,  0.2 si
# MiB Mem :  16000.0 total,   2000.0 free,   8000.0 used,   6000.0 buff/cache
# MiB Swap:   4096.0 total,   4090.0 free,      6.0 used.   7800.0 avail Mem
#    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
#   1234 mysql     20   0  500000 200000  12000 S   5.0   1.2  10:25.30 mysqld
#   5678 root      20   0  100000  50000   8000 S   2.0   0.3   5:12.45 nginx

# load average: 1分钟、5分钟、15分钟平均负载
# us: 用户态CPU   sy: 内核态   ni: nice优先级
# id: 空闲       wa: IO等待    hi: 硬件中断
# si: 软件中断    st: 虚拟化偷取

# VIRT: 虚拟内存   RES: 常驻内存   SHR: 共享内存
# S: 状态 (R=运行, S=睡眠, Z=僵尸)

交互快捷键

# === 排序 ===
P    # 按CPU使用率排序(默认)
M    # 按内存使用率排序
N    # 按PID排序
T    # 按运行时间排序

# === 显示控制 ===
1    # 显示/隐藏所有CPU核心的独立信息
l    # 显示/隐藏负载和运行时间
t    # 显示/隐藏任务和CPU信息行
m    # 显示/隐藏内存信息行

# === 内存单位 ===
E    # 切换内存显示单位 (KiB/MiB/GiB/TiB/PiB/EiB)

# === 窗口 ===
W    # 保存当前配置

# === 进程操作 ===
k    # 杀进程(输入PID和信号)
r    # 修改进程nice值(renice)
f    # 选择显示/隐藏字段

# === 其他 ===
h    # 帮助
q    # 退出
c    # 切换命令名显示(完整路径/命令名)
d/s  # 修改刷新间隔
u    # 只显示指定用户的进程
o/O  # 自定义排序条件
z    # 彩色/单色切换

进程操作

# 在 top 中按 k 杀进程:
# 1. 按 k
# 2. 输入 PID
# 3. 输入信号 (默认 15/SIGTERM)
#    9  = SIGKILL (强制)
#    15 = SIGTERM (优雅退出)
#    1  = SIGHUP (重载配置)

# 在 top 中按 r 修改 nice 值:
# 1. 按 r
# 2. 输入 PID
# 3. 输入 nice 值 (-20~19, 越小优先级越高)

# 按 u 过滤用户:
# 1. 按 u
# 2. 输入用户名(空字符串显示所有用户)

字段选择

# 按 f 进入字段管理:
# 用上下键选择字段
# 用 d 标记显示/隐藏
# 用 s 选择排序字段

# 常用字段说明:
# PID    - 进程ID
# USER   - 用户
# PR     - 优先级
# NI     - nice值
# VIRT   - 虚拟内存
# RES    - 常驻内存(实际物理内存)
# SHR    - 共享内存
# S      - 状态
# %CPU   - CPU使用率
# %MEM   - 内存使用率
# TIME+  - 累计CPU时间
# COMMAND- 命令名

批处理与自动化

#!/bin/bash
# 定期采样 top 数据
# 用法: ./monitor_top.sh [间隔秒] [次数]

INTERVAL="${1:-5}"
COUNT="${2:-12}"
OUTDIR="./top_data"
mkdir -p "$OUTDIR"

echo "采样间隔: ${INTERVAL}秒"
echo "采样次数: ${COUNT}次"
echo "输出目录: $OUTDIR"

for i in $(seq 1 $COUNT); do
    FILE="${OUTDIR}/top_$(date +%Y%m%d_%H%M%S).txt"
    top -b -n 1 -d "$INTERVAL" > "$FILE"
    echo "[$i/$COUNT] $(date '+%H:%M:%S') → $FILE"
done

echo "采样完成"

# 分析 CPU 占用最高的进程
echo ""
echo "=== CPU TOP 5 ==="
for f in "$OUTDIR"/top_*.txt; do
    awk 'NR>7 && !/top/{print $0}' "$f" | head -5
done | sort -k9 -rn | uniq -f12 | head -5
# 快速获取系统摘要
top -b -n 1 | head -20

# 提取 CPU 使用率
top -b -n 2 -d 1 | grep "%Cpu" | tail -1

# 提取内存信息
top -b -n 1 | grep "MiB Mem"

# 提取特定进程信息
top -b -n 1 -p $(pgrep nginx | head -1)

选项速查

选项 说明
-d SEC 刷新间隔(秒)
-n COUNT 刷新次数后退出
-p PID 监控指定进程
-u USER 监控指定用户
-b 批处理模式
-H 显示线程
-i 不显示空闲进程

top 是系统管理的第一道"探查器"——发现 CPU 或内存异常时,top 能帮你快速定位问题进程。对于更丰富的交互体验,可以尝试 htop;对于更详细的系统分析,可以尝试 atop

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章