Grumbel Asked: 2015-01-04 00:22:49 +0800 CST2015-01-04 00:22:49 +0800 CST 2015-01-04 00:22:49 +0800 CST 是否有人类可读的 strace 替代方案? 772 我想知道进程访问了哪些文件。strace可以为我提供该信息,但输出strace相当“原始”。是否有任何东西可以提供类似的功能,但以更易读的方式(即过滤掉库、突出显示 $HOME 目录中的文件、提供有关内容访问频率的统计信息等)? software-recommendation 2 个回答 Voted Best Answer Paludan 2015-01-04T02:22:41+08:002015-01-04T02:22:41+08:00 一个叫 Ole Tange 的人编写了您所描述的工具。在这里看看https://gitlab.com/ole.tange/tangetools/tree/master/tracefile。跟踪文件本质上是一个 shell 脚本,因此请使其可执行并运行它。.pod 文件是描述如何使用它的手册。 abu_bua 2018-11-03T05:36:56+08:002018-11-03T05:36:56+08:00 追踪 安装fatrace包: sudo apt install fatrace 名称 fatrace - 报告系统范围的文件访问事件 概要 fatrace [选项] 描述 fatrace 报告来自所有正在运行的进程的文件访问事件。 它不报告 fatrace 本身的文件访问,以避免记录将输出写入文件引起的事件。它还会忽略虚拟和内核文件系统(例如 sysfs、proc 和 devtmpfs)上的事件。 它的主要目的是找到不断不必要地唤醒磁盘的进程,从而防止一些省电。 默认情况下,事件报告到标准输出。如果您在例如 gnome-terminal 中运行此工具,这将导致一些循环,因为这会导致对每个输出行进行磁盘访问。为避免这种情况,请将输出重定向到一个文件中。 输出格式 一个典型的事件看起来像 rsyslogd(875): W /var/log/auth.log compiz(1971): O device 8:2 inode 658203 该行具有以下字段: 进程名称。这是从 /proc/pid/comm 中读取的,并且可能会缩写为长进程名称。 进程号 事件类型:打开、读取、写入或关闭。组合是可能的,例如 CW 用于关闭写入的文件。 受影响的文件。在某些情况下,无法确定路径和名称,例如因为它是一个已被删除的临时文件。在这种情况下,它会打印设备的主要和次要编号以及 inode 编号。要更详细地检查此类过程,您应该考虑使用 strace(1)。 如果您指定 --timestamp 选项,第一个字段将是当前时间。
一个叫 Ole Tange 的人编写了您所描述的工具。在这里看看https://gitlab.com/ole.tange/tangetools/tree/master/tracefile。跟踪文件本质上是一个 shell 脚本,因此请使其可执行并运行它。.pod 文件是描述如何使用它的手册。
追踪
安装fatrace包: