Linux top进程监控工具

介绍

top 命令相当于windows的任务管理器,实时监视 CPU、内存、进程 的占用情况

启动

直接在终端输入 top;退出:按 q

常用启动参数

# 每2秒刷新一次,总共刷新5次后退出
top -d 2 -n 5

# 只监控指定PID
top -p 1234

# 监控多个进程
top -p 1234,5678

# 批处理模式输出,适合重定向到文件
top -b -n1 > top.txt

界面

q 或 ctrl+c 退出top

解释

第一行

同 uptime 命令的执行结果

  • 系统时间:07:27:05

  • 运行时间:up 1:57 min,

  • 当前登录用户: 3 user

  • cpu平均负载 load average: 0.00, 0.00, 0.00。average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
    load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

第二行:进程概况

Tasks: 215 total,   1 running, 214 sleeping,   0 stopped,   0 zombie
  • total:总进程数
  • running:正在运行
  • sleeping:休眠(等待资源)
  • stopped:暂停进程
  • zombie:僵尸进程(进程已结束,父进程未回收)

第三行:cpu概况

%Cpu(s):  1.2 us,  0.5 sy,  0.0 ni, 97.8 id,  0.4 wa,  0.0 hi,  0.1 si,  0.0 st
  • us user:用户态CPU(应用程序占用)
  • sy system:内核态CPU
  • ni nice:调整过nice值的进程占用
  • id idle:空闲CPU,越高越好
  • wa iowait:等待IO(磁盘读写),wa高=磁盘瓶颈
  • hi hardware interrupt:硬件中断
  • si software interrupt:软中断
  • st steal:被虚拟机抢占的CPU(云服务器)

提示:按键盘 1:展开多核CPU,单独显示每个核心使用率

第四行:内存概况

MiB Mem :  7845 total,  1200 free,  3500 used,  3145 buff/cache

单位MiB

  • total:总内存
  • free:空闲内存
  • used:已使用内存
  • buff/cache:缓冲区+页缓存(Linux会尽量利用内存做缓存)

第五行:交换分区 Swap

MiB Swap:  4095 total,  4095 free,     0 used.  3800 avail Mem
  • used:swap使用量,swap持续上涨代表内存不足
  • avail Mem:可用内存(包含可回收缓存)

进程列表字段说明

默认列:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
字段 含义
PID 进程ID
USER 进程所属用户
PR 进程优先级
NI Nice值,范围 -20 ~ 19;越小优先级越高,root可设负数
VIRT 虚拟内存(VMSIZE):进程申请的全部内存,包含swap、共享库
RES 常驻内存(RSS):物理内存占用,不含swap,看这个判断内存消耗
SHR 共享内存
S 进程状态: R运行 S休眠 D不可中断休眠(IO阻塞) Z僵尸 T停止
%CPU 进程CPU占用(默认单核心占比,超过100%代表多线程)
%MEM 物理内存占总内存百分比
TIME+ 进程累计CPU时间
COMMAND 进程名/命令

提示:按 f 可以自定义显示/隐藏字段,按 q 返回。

快捷键

运行top时直接按键

按键 作用
q 退出top
1 展开/收起多核CPU
k 杀死进程,输入PID,回车,再输入信号(默认15正常终止,9强制杀)
r 修改进程nice值,输入PID,再输入nice值
s 修改刷新间隔,单位秒
h 帮助
z 彩色模式开关
c 显示完整命令行 / 只显示程序名切换
i 隐藏空闲进程

排序相关

  • N – 以 PID 的大小的顺序排列表示进程列表
  • P – 以 CPU 占用率大小的顺序排列进程列表
  • M – 以内存占用率大小的顺序排列进程列表
  • T:根据时间/累计时间进行排序。

常见问题判断

  1. us很高:业务程序CPU繁忙,代码/循环问题
  2. wa很高:磁盘IO瓶颈,数据库大量读写
  3. swap used持续上升:物理内存不够,频繁换页,性能暴跌
  4. 存在Z僵尸进程:父进程没有wait回收,需要处理父进程
  5. 单进程%CPU >100%:该进程是多线程,占用多个CPU核心

top 和 htop 区别

  • top:系统自带,无需安装,基础监控
  • htop:第三方工具,界面更友好,鼠标支持,树形进程查看,需要yum install htop / apt install htop

原文出处:/show_1IXYY2dh2lX.html