Linux 如果可能,如何从可执行文件跟踪所有输出文件

Linux 如果可能,如何从可执行文件跟踪所有输出文件,linux,file,tracking,utility,Linux,File,Tracking,Utility,我被分配到一个没有文档和大量非托管代码的项目。 整个项目中都有指向输出文件的显式声明路径(事实上,它们是在不同位置设置为不同值的环境变量)。我已经更改了这些,将输出重定向到我工作区中的目录,但是这些文件没有生成,我也无法在我的工作区中找到它们。我相信它们是在文件系统的其他地方创建的。正如我前面提到的,通过使用脚本,环境变量被分配到许多不同的地方。我以为我已经拿到了相关的剧本,但显然我遗漏了一些东西 是否有一个实用程序可用于跟踪特定可执行文件的所有文件输出(打印出所有读/写的文件名) 我在Fedo

我被分配到一个没有文档和大量非托管代码的项目。 整个项目中都有指向输出文件的显式声明路径(事实上,它们是在不同位置设置为不同值的环境变量)。我已经更改了这些,将输出重定向到我工作区中的目录,但是这些文件没有生成,我也无法在我的工作区中找到它们。我相信它们是在文件系统的其他地方创建的。正如我前面提到的,通过使用脚本,环境变量被分配到许多不同的地方。我以为我已经拿到了相关的剧本,但显然我遗漏了一些东西

是否有一个实用程序可用于跟踪特定可执行文件的所有文件输出(打印出所有读/写的文件名)


我在Fedora下工作,该项目主要用Fortran编写。

strace将打印每个系统调用的详细信息,您可以简单地筛选打开调用()的输出。

strace将打印每个系统调用的详细信息,您可以简单地筛选打开调用()的输出。

一个选项是
lsof

lsof -p <PID>
lsof-p

一个选项是
lsof

lsof -p <PID>
lsof-p

太棒了。我应该想到这个解决办法。我现在会尝试一下,并相应地更新我对你评论的投票。我不能说这个解决方案给了我想要的答案(不要误解我,它确实做了我需要它做的事情!),但它确实帮助我发现了我正在使用的软件中一个相当突出的问题。谢谢你的帮助,特纳。太好了。我应该想到这个解决办法。我现在会尝试一下,并相应地更新我对你评论的投票。我不能说这个解决方案给了我想要的答案(不要误解我,它确实做了我需要它做的事情!),但它确实帮助我发现了我正在使用的软件中一个相当突出的问题。感谢您的帮助,tstenner。当a)
strace
出于任何原因产生太多输出,以及b)当进程打开文件时知道输出太多时,这是一个不错的选择。很高兴知道还有其他方法。我对strace的输出进行了grep,但首先最小的输出总是好的。当a)
strace
出于任何原因产生太多输出时,以及b)当进程打开文件时知道输出时,这是一个很好的选择。很高兴知道还有其他方法。我对strace的输出进行了grep,但首先最小的输出总是好的。