如何使用top命令查看系统资源使用情况(CPU、内存、进程负载等)

top 是 Linux 系统中一个强大的实时性能监控工具,可以查看系统资源使用情况(如 CPU、内存、进程负载等)。以下是 top 命令的详细使用指南:


1. 启动 top

在终端直接输入命令:

top

会进入动态刷新的监控界面(默认3秒刷新一次)。


2. top 界面概览

top 界面分为两部分:

  • 上半部分:系统整体资源统计(CPU、内存、负载等)。
  • 下半部分:进程列表(默认按 CPU 使用率排序)。
上半部分示例:
top - 15:30:45 up 10 days,  2:15,  3 users,  load average: 0.50, 0.30, 0.20
Tasks: 150 total,   2 running, 148 sleeping,   0 stopped,   0 zombie
%Cpu(s): 15.3 us,  2.0 sy,  0.0 ni, 82.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7986.5 total,   1024.3 free,   4096.2 used,   2866.0 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   3500.2 avail Mem
  • load average:系统1/5/15分钟的平均负载(数值≈CPU核心数时为饱和)。
  • %Cpu(s)
    • us:用户进程占用CPU百分比。
    • sy:系统内核占用CPU百分比。
    • id:空闲CPU百分比(越高越好)。
    • wa:I/O等待占用CPU百分比(高则可能存在磁盘瓶颈)。
  • 内存/交换分区totalusedfree 等。
下半部分(进程列表)示例:
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
1234 root      20   0  500000  80000  10000 R  50.0  1.0   5:30.65 java
5678 mysql     20   0  800000 200000  20000 S  10.0  2.5   2:15.20 mysqld
  • 关键列
    • PID:进程ID。
    • %CPU:进程占用CPU百分比。
    • %MEM:进程占用内存百分比。
    • S:进程状态(R=运行, S=睡眠, Z=僵尸进程)。
    • COMMAND:进程名称/命令。

3. 常用交互命令

top 运行时,按以下单字母快捷键进行操作:

按键 功能
P CPU 使用率 排序(默认)
M 内存使用率 排序
T 进程运行时间 排序
N PID 排序
k 终止进程(输入PID后按回车)
r 调整进程优先级(输入PID和nice值)
1 展开显示所有CPU核心的详细使用率
h 显示帮助菜单
q 退出 top

4. 启动参数(命令行选项)

参数 说明
top -d 5 设置刷新间隔为5秒
top -p 1234 仅监控PID为1234的进程
top -u mysql 仅监控mysql用户的进程
top -b -n 2 > log.txt 以批处理模式运行2次,结果输出到文件

5. 实用技巧

(1)高亮显示活跃进程

z 可切换颜色高亮,方便识别运行中的进程。

(2)监控特定线程
  1. 启动 top 后按 H(大写),显示所有线程。
  2. 结合 -p 参数监控Java进程的线程:
    top -H -p $(pgrep java)
    
(3)查看完整命令

c 可显示进程的完整命令行(避免截断)。

(4)保存快照

W(大写)将当前配置保存到 ~/.toprc,下次启动自动生效。


6. 替代工具推荐

  • htop:增强版 top,支持鼠标操作和树状视图(需安装:apt install htop)。
  • glances:更全面的监控工具(支持网络、磁盘等)。

示例场景

问题:Java进程CPU占用过高
  1. 启动 top,按 P 按CPU排序。
  2. 发现某个Java进程占用了90% CPU,记下PID(如 1234)。
  3. 进一步分析该进程的线程:
    top -H -p 1234
    
  4. 将高CPU线程的PID(如 5678)转为16进制:
    printf "%x\n" 5678  # 输出162e
    
  5. jstack 查看线程堆栈:
    jstack 1234 | grep -A 20 162e
    

通过 top 可以快速定位系统资源瓶颈(如CPU、内存、I/O),结合其他工具(如 jstackvmstat)能深入分析问题根源。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐