第 3.2 部分 - Linux 任务管理器、顶部和 htop

适用于: Linux 中的 .NET

本文介绍如何使用 top 命令行 htop 工具来监视进程。

先决条件

与前面的部分一样,本部分的结构更加强调开始故障排除时要遵循的理论和主体。 它没有任何先决条件。 但是,如果已按照此培训的所有步骤操作,则应已设置以下各项:

  • Nginx 有两个网站:
    • 第一个网站使用 myfirstwebsite 主机标头(http://myfirstwebsite)侦听请求,并将请求路由到正在侦听端口 5000 的演示 ASP.NET Core 应用程序。
    • 第二个网站使用 buggyambhttp://buggyamb) 主机标头侦听请求,并将请求路由到正在侦听端口 5001 的第二个 ASP.NET Core 示例 buggy 应用程序。
  • ASP.NET Core 应用程序都作为服务运行,这些服务在重新启动服务器时自动重启,或者应用程序停止响应或失败。
  • Linux 本地防火墙已启用并配置为允许 SSH 和 HTTP 流量。

本部分的目标

排查性能问题时,可能需要监视进程的 CPU 和内存使用情况,以了解其资源消耗随时间的变化。 在 Windows 中,可以使用任务管理器执行此操作。 Linux 有几个工具旨在实现相同的目标。

此部分将检查tophtop用于监视进程的命令行工具和命令行工具。

返回页首

若要在 Linux 中打开等效的任务管理器,请 top 运行该命令。

顶部命令的屏幕截图。

在此示例中,可以在 PID 19933 的第一个列出的进程中观察到进程显示 CPU 使用率高,内存使用率也很高。

选择和取消选择列

若要在工具提供的视图中 top 添加或删除列,请在运行该工具时选择 F 。 用星号标记的列是选择用于显示的列。 使用箭头键在可用列中移动,并使用空格键选择或取消选择列。 然后选择 Esc 退出。

列信息的屏幕截图。

这些更改将保存给用户帐户。 下次运行 top时,你将看到所选列。

按用户筛选输出

为了能够面向有问题的资源消耗方案,请务必了解如何筛选 top 输出。 最常见的方法之一是按用户名筛选进程。 可以选择 U,然后键入用户名。 以下屏幕截图显示了 top 筛选 www-data 用户的可用进程快照的工具。

用户信息的屏幕截图。

选择 Enter 时,会看到给定用户运行的进程(此示例中的 www-data 用户)。

用户信息的屏幕截图。

检查筛选 top 视图的输出时,可以看到其中两个进程是 .NET 进程。 这两个进程运行两个 ASP.NET 核心应用程序,而其他两个进程属于 Nginx。

可以直接运行 top 命令时,可以使用筛选器。 例如,如果运行 top -u www-data 命令,它将生成与打开 top 该工具并选择 U 按用户筛选时得到的输出相同。

删除空闲进程

选择 “我 ”或运行 top -i 命令以筛选 top 输出,以仅显示消耗 CPU 的进程。 以下屏幕截图显示了命令的 top -i -u www-data 输出。 请注意,即使有四个进程是使用 www-data 用户帐户启动的,输出 top 也会隐藏空闲进程。 只有 PID=19933 的进程才会消耗 CPU。

删除信息的屏幕截图。

再次选择 “我 ”切换开关并显示空闲进程。

终止进程

若要终止或终止进程,必须向进程发送终止信号。 你可能会记得我们之前使用了 sudo kill -9 <PID> 命令来终止进程。 还可以使用 top 终止进程。 选择 K 以在运行时终止进程 top ,然后键入要终止的进程的 PID。

kill 命令的屏幕截图。

选择 Enter 后, top 要求输入信号类型。 选择 “输入 一次”以发送“终止”信号(15/sigterm)。

kill top 命令的屏幕截图。

几秒钟后,你将看到列表中缺少 PID 122632的过程。 请记住,在列表中,“122632”进程对应于 BuggyAmb ASP.NET Core 应用程序。 由于它配置为自动启动,因此你将看到一个新的 .NET 进程在关闭后启动新的 PID。

htop

Htop 是一个进程查看器和文本模式应用程序,用于实时监视系统,类似于 top。 它易于使用,它显示正在运行的进程的完整列表。

该工具 htop 在 Ubuntu Linux 的分发中预安装,用于安装本课程的虚拟服务器。 如果未 htop 在 Linux 发行版中安装,可以使用 Linux 中的包管理器来安装它。 (请参阅 第 1.3 部分 - 在 Linux 中安装 .NET 了解详细信息。

若要启动该工具,请运行 htop 命令。 你将看到类似于以下五颜六色的输出:

kill htop 命令的屏幕截图。

备注

底线指示可以使用的函数键。 选择 F6 以按不同的选项排序,使用箭头键选择 PERCENT_MEM 列,然后选择 Enter。 这会按内存使用情况对进程进行排序。

内存使用情况的屏幕截图。

top 命令一样,可以对多个函数使用键盘快捷方式。 例如,选择 U 从列表中选择用户名。

用户名信息的屏幕截图。

但是,输出中有 htop 一些令人困惑的内容。 根据最后一个示例的输出,你应该会看到 www-data 用户的四个进程。 但是,我们看到还有更多条目。 导致此行为的原因是什么?

输出中的区别是 htop 默认显示进程及其线程。 除非想要查看线程,否则建议始终禁用线程视图以使输出更加清晰。 若要禁用线程视图并仅查看进程,请选择 Shift+H。 以下屏幕截图显示了没有线程的进程。

进程信息的屏幕截图。

如果必须终止进程,请使用箭头键选择进程,选择 F9,然后选择 Enter 发送“终止”信号。

终止信息的屏幕截图。

此简洁概述应允许你了解哪些进程在系统上运行和使用资源。 若要退出htop,请选择 F10Ctrl+C

后续步骤

本系列的下一部分(第 3.3 部分 - 调试器、核心转储和收集核心转储)讨论调试器和转储文件。