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

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

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

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

当然,Linux 有一个本地命令行实用程序,名为 Strace 跟踪系统调用和信号。 Strace 很酷,但在我看来,Procmon 的观点总是更清晰、更好。

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

在 Linux 中安装进程监视器

确保您已添加 微软的 Linux 软件存储库 在你的 Linux 系统中。 例如,运行以下命令在 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 安装在 Fedora,RHEL使用命令:

$ sudo dnf install procmon

使用进程监视器跟踪 Linux 中的系统调用活动

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

$ sudo procmon

示例输出:

使用进程监视器跟踪 Linux 中的系统调用活动

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

在 Procmon 中查看事件属性

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

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

资源:

  • Procmon GitHub 存储库

相关阅读:

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

LinuxMicrosoftProcess MonitorProcmonSyscallSysinternals suite系统调用