在 Windows 领域,您可以从 Sysinternals 运行 Procmon(进程监视器),它将向您显示每个文件访问、注册表查询等系统范围(附截图)。然后,您可以回溯以查找哪些进程正在触摸/访问特定文件(或注册表查询)。
在 Linux 领域,我有时会找到哪些进程正在访问系统上的特定文件——但我不知道从哪个进程开始查看。我知道 strace,并且我知道我可以将它附加到多个进程 - 但是有没有办法在 Linux 下全局输出每个文件访问?
在 Windows 领域,您可以从 Sysinternals 运行 Procmon(进程监视器),它将向您显示每个文件访问、注册表查询等系统范围(附截图)。然后,您可以回溯以查找哪些进程正在触摸/访问特定文件(或注册表查询)。
在 Linux 领域,我有时会找到哪些进程正在访问系统上的特定文件——但我不知道从哪个进程开始查看。我知道 strace,并且我知道我可以将它附加到多个进程 - 但是有没有办法在 Linux 下全局输出每个文件访问?
我们在这种情况下:https ://stackoverflow.com/questions/7304826/how-to-debug-a-multithreaded-hung-process-in-linux
当我们尝试查看一个流氓进程(消耗 100% CPU)时,它处于以下状态:
ls -l /proc/XXXX/fd
lrwx------ 1 root root 64 Feb 1 16:08 9 -> /tmp/.ZendSem.sdiU42 (deleted)
我们想知道文件中的内容(现在已被删除),以尝试追踪导致问题的原因。我认为 ftrace 可能能够做到这一点(或者可能是另一个工具),但我不知道如何去做。