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。













