Mike Pierce Asked: 2019-04-24 08:51:33 +0800 CST2019-04-24 08:51:33 +0800 CST 2019-04-24 08:51:33 +0800 CST 您如何确定哪个程序/进程正在创建文件?[复制] 772 假设有一个文件在我删除它之后仍然自动出现在我的主目录中。对它一无所知,有没有办法弄清楚是什么把那个文件放在那里?有没有办法追踪创建它的程序/进程? linux files 1 个回答 Voted Best Answer Andy Dalton 2019-04-24T12:33:07+08:002019-04-24T12:33:07+08:00 一种选择是使用sysdig:开源系统监控应用程序。使用它,您可以按名称监视文件的活动。假设您想查看创建名为 的文件的进程/tmp/example.txt: # sysdig fd.name=/tmp/example.txt 567335 16:18:39.654437223 0 touch (5470) < openat fd=3(<f>/tmp/example.txt) dirfd=-100(AT_FDCWD) name=/tmp/example.txt flags=70(O_NONBLOCK|O_CREAT|O_WRONLY) mode=0666 567336 16:18:39.654438248 0 touch (5470) > dup fd=3(<f>/tmp/example.txt) 567337 16:18:39.654438592 0 touch (5470) < dup res=0(<f>/tmp/example.txt) 567338 16:18:39.654439629 0 touch (5470) > close fd=3(<f>/tmp/example.txt) 567339 16:18:39.654439764 0 touch (5470) < close res=0 567342 16:18:39.654441958 0 touch (5470) > close fd=0(<f>/tmp/example.txt) 567343 16:18:39.654442111 0 touch (5470) < close res=0 从该输出中,您可以看到名为touchpid 5470 的进程打开了该文件。 如果您想了解更多信息,可以在收集系统调用跟踪的“捕获模式”下运行: # sysdig -w /tmp/dumpfile.scap 然后等待文件创建完成,然后停止sysdig运行: # csysdig -r /tmp/dumpfile.scap 这会让你探索发生的一切。您可以按<F2>并选择Files,按<F4>搜索文件名,然后按<F6>“挖掘”(这将显示类似于上述命令的输出)。这样,您就可以使用相同的方法来查找有关实际创建文件的进程的信息。 有一个 GUI 版本的csysdigcalled sysdig-inspect,如果这更像是你的一杯茶的话。
一种选择是使用
sysdig
:开源系统监控应用程序。使用它,您可以按名称监视文件的活动。假设您想查看创建名为 的文件的进程/tmp/example.txt
:从该输出中,您可以看到名为
touch
pid 5470 的进程打开了该文件。如果您想了解更多信息,可以在收集系统调用跟踪的“捕获模式”下运行:
然后等待文件创建完成,然后停止
sysdig
运行:这会让你探索发生的一切。您可以按
<F2>
并选择Files
,按<F4>
搜索文件名,然后按<F6>
“挖掘”(这将显示类似于上述命令的输出)。这样,您就可以使用相同的方法来查找有关实际创建文件的进程的信息。有一个 GUI 版本的
csysdig
calledsysdig-inspect
,如果这更像是你的一杯茶的话。