使用进程监视器 (Procmon) 在 Linux 中跟踪系统调用活动

在过去的几年里,微软一直在为 Linux 和开源的利益做着值得称道的工作。 他们开源了许多应用程序,例如 VSCode、.NET、Teams、 Edge 浏览器等。最近添加到列表中的是 进程监视器. 进程监视器,很快 普罗克蒙,允许开发人员方便、轻松地跟踪 Linux 系统中的系统调用活动。

Process Monitor 是对经典 Procmon 工具的 Linux 重新构想,来自 系统内部套件 适用于 Windows 的工具。 Sysinternals 套件包含多个用于管理、诊断、故障排除和监控 Microsoft Windows 系统的工具。 Process Monitor 是 Sysinternals 套件的一部分。

Process Monitor 是用于 Windows 的高级监控工具,可显示实时文件系统、注册表和进程/线程活动。 它在 Windows 操作系统中实时监控文件系统、注册表、进程、线程和 DLL 活动。

当然,Linux 有一个名为 Strace 跟踪系统调用和信号。 Strace 很酷,但在我看来,Procmon 的视图总是更干净、更好。

微软几个月前发布了适用于 Linux 的 Procmon。 Procmon 写在 C++ 其源代码可在 GitHub 中免费获得。

在 Linux 中安装进程监视器

确保您已添加 微软的 Linux 软件存储库 在您的 Linux 系统中。 为了 example,运行以下命令在 Ubuntu Linux 上添加 Microsoft Linux 存储库:

$ wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
$ sudo apt update

启用 Microsoft 存储库后,运行以下命令在 Ubuntu 上安装 Procmon:

$ sudo apt install procmon

在其他 Linux 发行版上,替换 apt 使用您的发行版的包管理器。 例如,您可以将 Procmon 安装在 FedoraRHEL 使用命令:

$ sudo dnf install procmon

使用 Process Monitor 在 Linux 中跟踪 Syscall 活动

要跟踪 Linux 系统上的所有进程和系统调用,请启动进程监视器 sudo 或者 root 没有任何选项的用户:

$ sudo procmon

样本输出:

使用 Process Monitor 在 Linux 中跟踪 Syscall 活动

要查看任何进程的事件属性,只需选择它并按 ENTER 键。

在 Procmon 中查看事件属性

您可以使用功能键 F1F9 执行各种任务,例如显示帮助、排序过程、搜索、过滤、导出、显示统计信息等。例如,按 F8 显示前 10 个系统调用统计信息。 要退出进程监视器,请按 q 或者 F9 钥匙。

目前 Procmon for Linux 仅包含有限的功能集。 事实上,它看起来只是 Windows 上进程监视器的一小部分。 如果 Procmon 能像 Windows 下一样完整,对 Linux 开发者会更有帮助。 有关更多详细信息,请参阅项目的 GitHub 页面。

资源:

相关阅读:

  • 在 Linux 中使用 Bashtop 和 Bpytop 监控系统资源
  • Sysmon – Linux 系统监视器(如 Windows 任务管理器)
  • 使用 SysMonTask 监控 Linux 系统资源使用情况
  • 您可能想知道的“顶级”命令行实用程序的一些替代方案