pigeonburger Asked: 2021-11-10 23:10:32 +0800 CST2021-11-10 23:10:32 +0800 CST 2021-11-10 23:10:32 +0800 CST 准确查看每个程序访问的文件 772 您可以使用进程监视器轻松观察到程序正在执行 I/O 磁盘操作。有没有一种简单的方法可以准确地观察每个进程正在读取/写入哪些文件? 欢迎使用 Windows/Linux 解决方案! windows linux 2 个回答 Voted user1686 2021-11-11T01:06:15+08:002021-11-11T01:06:15+08:00 在 Windows 上,您将使用一个字面上称为Process Monitor或简称 ProcMon 的应用程序。它捕获所有文件和注册表访问——不仅仅是“当前”状态,而是每个单独的操作。 这种类型的工具特别有用,因为许多文件可以快速打开-读取-关闭,而不是长时间保持打开状态。 ProcMon 的大致 Linux 等价物是strace. 要查看所有与文件相关的系统调用: strace -e file /bin/chmod a+w test.txt 其他类似的工具是perf trace和ltrace。BSD 有ktruss,我认为。 高度灵活的系统跟踪可以通过bpftraceSystemTap来完成stap(两者都类似于 Solaris' dtrace)。不过,他们需要一段时间来学习。相关。 带有的 Linux审计子系统auditctl可用于跟踪对特定文件的操作,无论它们是由哪个进程完成的。例如,您可以查看正在访问您的 ~/.ssh/id_rsa 私钥的内容。 (类似地,像 AppArmor 这样的 LSM 可以在“抱怨”或“允许”模式下运行,它们只记录将被拒绝的操作,但实际上并不拒绝它们。) fanotify子系统可用于获取正在访问的所有文件的系统范围的消防水管馈送,例如使用该工具fatrace。(它类似于 inotify,它是每个目录的;inotifywait -rmq ~/foo将递归地监视该目录。) Best Answer Gantendo 2021-11-10T23:22:55+08:002021-11-10T23:22:55+08:00 我喜欢OpenedFilesView因为我老了。还可以查看Process Explorer和 Resource Monitor (resmon)。 使用 Windows-R 打开运行框。键入resmon并按 Enter 键。 在 *nix 上我会使用lsof。
在 Windows 上,您将使用一个字面上称为Process Monitor或简称 ProcMon 的应用程序。它捕获所有文件和注册表访问——不仅仅是“当前”状态,而是每个单独的操作。
这种类型的工具特别有用,因为许多文件可以快速打开-读取-关闭,而不是长时间保持打开状态。
ProcMon 的大致 Linux 等价物是
strace
. 要查看所有与文件相关的系统调用:其他类似的工具是
perf trace
和ltrace
。BSD 有ktruss
,我认为。高度灵活的系统跟踪可以通过
bpftrace
SystemTap来完成stap
(两者都类似于 Solaris'dtrace
)。不过,他们需要一段时间来学习。相关。带有的 Linux审计子系统
auditctl
可用于跟踪对特定文件的操作,无论它们是由哪个进程完成的。例如,您可以查看正在访问您的 ~/.ssh/id_rsa 私钥的内容。(类似地,像 AppArmor 这样的 LSM 可以在“抱怨”或“允许”模式下运行,它们只记录将被拒绝的操作,但实际上并不拒绝它们。)
fanotify子系统可用于获取正在访问的所有文件的系统范围的消防水管馈送,例如使用该工具
fatrace
。(它类似于 inotify,它是每个目录的;inotifywait -rmq ~/foo
将递归地监视该目录。)我喜欢OpenedFilesView因为我老了。还可以查看Process Explorer和 Resource Monitor (resmon)。
使用 Windows-R 打开运行框。键入
resmon
并按 Enter 键。在 *nix 上我会使用lsof。