top

top 命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况,类似win的任务管理器。

top 是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,知道用户终止该程序为止。比较准确的说,top命令提供了实时的监视系统处理器状态的功能,它将显示系统中 CPU 最敏感的任务列表。

该命令可按:CPU使用、内存使用、执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

第一行:

  • 10:31:02: 系统当前时间
  • up 5 min: 系统开机到现在经过了多少时间
  • 1 users: 当前用户在线
  • load average: 0.79, 0.82, 0.41 系统1分钟、5分钟、15分钟的CPU负载信息

第二行:

  • Tasks: 任务
  • 87 total: 当前有87个任务,也就是87个进程
  • 2 running: 2个进程正在运行
  • 85 sleeping:85个进程睡眠
  • 0 stopped:停止的进程数
  • 0 zombie:僵死的进程数

第三行:

Cpu(s)表示的是cpu信息。各个值的意思是:

  • us: user cpu time (or) % CPU time spent in user space
  • sy: system cpu time (or) % CPU time spent in kernel space
  • ni: user nice cpu time (or) % CPU time spent on low priority > processes
  • id: idle cpu time (or) % CPU time spent idle
  • wa: io wait cpu time (or) % CPU time spent in wait (on disk)
  • hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
  • si: software irq (or) % CPU time spent servicing/handling software interrupts
  • st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
  • %Cpu(s):表示这一行显示CPU的总体信息
  • 19.5 us: 用户态进程占用CPU时间百分比,不包 renice 值为负的任务占用的CPU的时间
  • 5.5 sy: 内核占用CPU时间百分比
  • 0.0 ni: 改变过优先级的进程占用CPU的百分比
  • 64.0 id: 空闲CPU时间百分比
  • 7.5 wa: 等待I/O的CPU时间百分比
  • 0.0 hi: CPU 硬中断时间百分比
  • 0.0 si: CPU 软中断时间百分比

Note:这里显示数据是所有CPU的平均值,如果想看每一个CPU的处理情况,按 1 即可;折叠,再次按 1

第四行:

  • KiB Mem: 内存信息(Kib=1024byte)
  • 1883616 total: 物理内存总量(1.75GiB)
  • 440660 free: 空闲的物理内存量(0.44GiB)
  • 591500 used: 使用的物理内存量(0.59GiB)
  • 851456 buff/cache: 用作内核缓存的物理内存量

Note: KB & KiB 的区别:1KB(kilobyte)=1000byte, 1KiB(kibibyte)=1024byte

第五行:

  • KiB Swap:交换空间
  • 0 total:交换区总量
  • 0 free:空闲的交换区量
  • 0 used:使用的交换区量
  • 1114452 avail Mem:可用的物理内存总量

进程信息

  • 再下面就是进程信息
  • PID:进程的ID
  • USER: 进程的所有者
  • PR: 进程的优先级别,越小越被优先执行
  • NI(NInice): 进程的优先级别值,默认的为0,可以进行调整
  • VIRT: 进程占用的虚拟内存
  • RES: 进程占用的物理内存
  • SHR: 进程使用的共享内存
  • S: 进程的状态
  • %CPU:进程占用CPU的使用率
  • %MEM: 进程使用的物理内存和总内存的百分比
  • TIME+: 该进程启动后占用的总的CPU的时间,即占用CPU使用时间的累加值
  • COMMAND: 进程启动命令名称

top 命令交互操作命令

下面列出一些常用的 top命令操作指令

  • q:退出top命令
  • Space:立即刷新
  • s:设置刷新时间间隔
  • c:显示启动命令完全模式
  • t: 显示或隐藏进程和CPU状态信息
  • m: 显示或隐藏内存状态信息
  • l: 显示或隐藏uptime信息
  • f: 增加或减少进程显示标志
  • S: 累计模式,会把已经完成或退出的子进程占用的CPU时间累计到父进程的TIME+
  • P: 按%CPU使用率排序
  • T: 按TIME+排序
  • M:按%MEM内存使用率排序
  • u: 指定显示用户进程
  • r: 修改进程 renice 值
  • k:kill 进程
  • i: 只显示正在运行的进程
  • W: 保存对 top 的设置到文件 ~/.toprc, 下次启动将自动调用 toprc 文件的设置。
  • h: 帮助命令

Note: 使用频率最高的是P、T、M,因为通常使用 top, 我们就想看看是哪些进程最耗CPU资源,占用的内存最多;通过 shift+>shift + < 可以向右或向左改变排序列。如果只需要查看内存,可用 free 命令。只查看uptime时间信息(第一行),可用uptime命令

实例

多核CPU监控

在 top 基本试图中,按键盘数字 1, 可监控每个逻辑CPU的状况

高亮显示当前运行进程

在 top 基本视图中,按键盘 b,(打开/关闭加亮效果)

显示完整的程序命令

$ top -c

显示指定的进程信息

$ top -p pid

指定进程信息有多个时,需要结合其他工具将回车替换为(-p 支持 pid, pid, pid语法)

$ top -p pgrep MULTI_PROCESS | tr “\n” “,” | sed ’s/,$//’

更强大的工具 htop

htop

htop 是一个Linux下的交互式的进程浏览器,可以用来替换Linux下的top命令

与Linux传统的top比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作

与 top 相比,htop 有以下优点:

  • 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行
  • 在启动上,比 top 更快
  • 杀进程时不需要输入进程号
  • htop 支持鼠标操作

top 缺点: - 只支持键盘操作 - 显示也单调

语法

1
htop

参数

1
2
3
4
5
6
7
-C --no-color               使用单色配色方案
-d --delay=DELAY            设置更新之间的延迟,在十秒
-s --sort-key=COLUMN        纵列排序(try --sort-key=help for a list)
-u --user=USERNAME          只显示一个指定用户的进程
-p --pid=PID,[,PID,PID...]  只显示给用户
-h --help                   打印此命令帮助
-v --version                打印版本信息

选项

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
h,?     F1:查看htop使用说明
S       F2:设置
/       F3:搜索进程
\       F4:过滤器,按关键字搜索
t       F5:显示树形结构
<,>     F6:选择排序方式
[       F7:减少nice值,这样就可以提高对应进程的优先级
]       F8:增加nice值,这样可以降低对应进程的优先级
k       F9:杀掉选中的进程
q       F10:退出htop


/ : 搜索字符
h : 显示帮助
l : 显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u : 显示所有用户,并可以选择某一特定用户的进程
U : 取消标记所有的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构

H:显示/隐藏用户线程
I:倒转排序顺序
K:显示/隐藏内核线程    
M:按内存占用排序
P:按CPU排序    
T:按运行时间排序

上下键或PgUP, PgDn : 移动选中进程  
左右键或Home, End : 移动列表  
Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程
Htop设定
鼠标点击Setup或者按下F2 之后进入htop 设定的页面

设置

  • Meters

    设定顶端的 显示信息,分为左右两侧,Left column 表示左侧的显示的信息,Right column表示右侧显示的信息,如果要新加选项,可以选择Available meters添加,F5新增到上方左侧,F6新增到上方右侧。Left column和Right column下面的选项,可以选定信息的显示方式,有LED、Bar(进度条)、Text(文本模式),可以根据个人喜好进行设置

  • Display options

    选择要显示的内容,按空格 x表示显示,选择完后,按F10保存

  • Colors

    设定界面以什么颜色来显示,个人认为用处不大,各人喜好不同

  • Colums

    作用是增加或取消要显示的各项内容,选择后F7(向上移动)、F8(向下移动)、F9(取消显示、F10(保存更改))此处增加了PPID、PGRP,根据各人需求,显示那些信息。

  • F3 搜索进程

    在界面下按F3或直接输入”/”就可以直接进入搜索模式,是按照进程名进行搜索的,搜索到的进程会用设定的颜色标记出来,方便查看。

  • F4:过滤器

    相当于模糊查找,不区分大小写,下方输入要搜索的内容后,则界面只显示搜索到的内容,更加方便查看

  • F5: 以树形方式显示

  • F6:排序方式

    按下F6后会跳转至以树形方式显示界面,让您选择以什么方式进行排序,在Sort by下选择您要以什么来排序

  • F7,F8:调整进程nice值

    F7表示减小nice值(增大优先级),F8增大nice值(减小优先级),选择某一进程,按F7或F8来增大或减小nice值,nice值范围为-20-19

  • F9:杀死进程

    选择某一进程按F9即可杀死此进程,很方便

  • F10: 退出htop

See Also

Thanks to the authors 🙂