Linux/Unix下的top命令及示例

2025年3月17日 | 阅读 7 分钟

top命令显示系统环境中所有正在运行的进程。它有助于监控系统使用情况和性能。系统管理员主要用它来检测服务器负载。

top命令意为“进程列表”。它是一个任务管理器程序,在多种类Unix操作系统中都有,用于显示内存和CPU利用率的信息。

Top命令概述

该程序生成一个按用户指定格式排序的活动进程列表,并定期更新。默认排序方式是按CPU使用率,只显示占用CPU最多的进程。top命令显示内存和处理能力的使用情况,以及活动进程的其他详细信息。

一些top版本允许对显示进行广泛的自定义,例如排序方法或列的选择。该命令对系统管理员很有帮助,因为它显示了哪些进程和用户在某个时间点使用了最多的系统资源。

Top命令的实现

有各种不同的top版本可用。经典的Unix版本最初由William LeFebvre在1984年编写并获得版权。它托管在SourceForge上,3.7版本发布于2008年。Linux发行版中的top是procps-ng工具集的一部分。最初由Roger Binns编写,但很快被其他人接管。Solaris上的prstat功能与之大致相当。

Microsoft Windows包含图形化的任务管理器实用程序和tasklist命令。IBM AIX包含一个作为topas_nmon和topas命令一部分的活动进程更新列表。

在Linux中,负载平均值是指等待在运行队列中的进程总数加上当前正在执行的进程总数的和。这个数字是绝对的,而不是相对的。因此,与利用率不同,它可能没有上限。使用固定点数学计算的指数衰减公式会抑制进程总数的即时变化。

ps命令与top命令类似,但它只在调用时生成进程快照。top命令的n(总迭代次数)选项可以生成类似的结果,使程序执行指定的迭代次数后退出并显示其结果。

Top命令的选项

选项描述
-a此选项用于根据分配的内存来处理进程。
-b它以批处理模式启动top命令,这有助于将top命令的结果发送到其他文件和程序。
-c它以最后记住的状态反转'c'启动top命令。
-d它显示屏幕更新之间的延迟,然后覆盖启动默认值或用户配置文件中的相应值。
-h显示用法提示和库版本,然后退出。
-H它以最后记住的状态反转'H'启动top命令。
-i它以最后记住的状态反转'i'启动top命令。
-m它报告已使用的(rss进程总数和交换空间总数)而不是虚拟内存。
-M它显示内存单位并在内存摘要中显示浮点值。
-n它描述了top命令在完成之前应该生成的最大帧数或迭代次数;
-p它只监视具有进程ID的进程。
-s它更容易从系统配置文件中管理。
-S当**“累积模式”**激活时,所有进程都使用它及其已终止的子进程所消耗的CPU时间进行列出。
-U它只监视具有有效用户名或UID与提供的匹配的进程。它匹配已保存、有效和实际文件系统UID。
-u它只监视具有有效用户名或UID与提供的匹配的进程。
-v显示用法提示和库版本,然后退出。

Top命令的列和字段

下面解释了top命令中的一些重要字段或列

  • PID: 进程ID或任务的唯一进程ID,它会周期性地重新启动,而不是从零开始。
  • RUSER: 任务所有者的实际用户名。
  • PPID: 父进程PID。它是任务的父进程的ID。
  • UID: 任务所有者的有效用户ID。
  • USER: 任务所有者的有效用户名。
  • GROUP: 任务所有者的有效组名。
  • TTY: 控制终端名称。
  • PR: 显示任务的优先级。
  • NI: 任务的nice值。负值NI表示更高优先级,正值NI表示更低优先级。
  • P: 指示最后使用的处理器的数字。
  • TIME: 显示任务启动以来所使用的CPU时间。

语法


Linux top1

查看上面的快照,它的输出解释如下:

第一行

  • 时间
  • 系统运行了多长时间
  • 多少用户已登录
  • 以及负载平均值

第二行

  • 任务总数
  • 运行任务数
  • 睡眠任务数
  • 停止任务数
  • 以及僵尸任务数

第三行

它以百分比显示CPU使用情况,用于:

  • 用户
  • system
  • 低优先级进程
  • 空闲进程
  • I/O等待
  • 硬件中断
  • 软件中断
  • 窃取时间

第四行

它以千字节显示内存使用情况,用于:

  • 总内存
  • 已用内存
  • 空闲内存
  • 缓冲内存

第五行

它以千字节显示交换内存使用情况,用于:

  • 总内存
  • 已用内存
  • 空闲内存
  • 缓存内存

表格说明

  • 进程ID
  • user
  • 优先级
  • nice用户
  • 虚拟内存
  • 驻留内存
  • 可共享内存
  • CPU使用百分比
  • 内存使用百分比
  • 进程运行时间
  • command

如果您愿意,可以通过按键来**隐藏/显示**这些标题行。

例如:

按 **l** - 显示/隐藏第一行。顶部行

按 **t** - 显示/隐藏第三行。CPU信息

按 **m** - 显示/隐藏第四行和第五行。内存信息

将top命令保持在后台运行

您可以让top命令在后台持续运行,而无需每次都在终端中输入top。

按 **ctrl+z** 键可返回您的终端。

Linux top2

查看上面的快照,按下ctrl+z键后,top命令已停止,我们已返回终端。

要将top命令带回终端,请在终端中键入 **fg**。

对top输出进行排序

默认情况下,top命令始终按CPU使用率排序显示输出。

**按 M** - 按内存使用率排序显示。

Linux top3

**按 O** - 显示所有可排序的列。

Linux top4

查看上面的快照,所有列都分配了一个字母。要按列排序,请键入相应的字母,输出将根据该列进行排序。

在第一行中,显示了当前排序字段,即N,表示当前按N列排序。

**按 R** - 按相反的顺序显示。

Linux top5

在不退出top的情况下杀死一个任务

可以通过按 **k** 键在不退出top命令的情况下停止一个任务。

它会询问任务的PID号,如果您有权限杀死该任务,则任务将被移除。否则,您的命令将失败。

Linux top6

查看上面的快照,按下k后,我们收到了一个要求杀死任务PID的消息。

重置任务的nice值

Renice用于更改调度顺序。通过按 **r**,您可以在不杀死进程的情况下更改其优先级。它还会询问进程的PID。

Linux top7

查看上面的快照,按下r后,我们收到了一个要求重置任务nice值的消息。

显示特定用户的进程

在top命令输出中,您可以通过两个选项来仅显示特定用户的所有进程。一个是通过命令行,另一个是在不退出top的情况下。

在命令行中,使用以下命令

语法

示例

top -u sssit

Linux top8

查看上面的快照,它只显示用户sssit的所有进程。

当top命令运行时,按 **u**,它会要求输入用户名。键入用户名并按Enter键。

Linux top9

查看上面的快照,按下u后,它正在要求输入用户名。

更新top输出

默认情况下,top输出每3秒更新一次。当您想在3秒内更新它时,请按 **空格键**。

您还可以通过在运行top命令时按 **d** 键来更改更新频率。

Linux top10

查看上面的快照,按下d键后,它正在要求输入它将频繁更新的时间。

更改颜色

可以通过按 **z** 键更改颜色,并通过按 **b** 键使文本变为粗体。

Linux top11

查看上面的快照,通过按b,所有运行的进程都以白色高亮显示。

要更改颜色,请按 **z** (小写z) 键。

Linux top12

查看上面的快照,按z后,我们的输出已着色。

现在,如果您想为不同区域更改颜色,请按 **Z** (大写Z)。它会带您到菜单,您可以在其中为不同的目标选择不同的颜色。

Linux top13

假设我们想在列标题上应用蓝色,在任务信息上应用洋红色。

那么我们将按H的4来设置标题,按T的5来设置任务信息。

Linux top14

查看上面的快照,颜色已更改为其各自的目标。

在特定迭代次数后退出

top命令会持续显示输出,直到您按q键退出。

但是您可以定义一定数量的迭代次数,之后top命令会自动从终端退出。

语法

示例

top -n 2

使用上面的示例,它将显示2次迭代然后自动退出。


下一个主题Linux last