如何在linux中找到现在编写的文件?

时间:2010-12-09 19:30:22

标签: linux file-io

我需要在linux的当前时刻找到一些脚本编写的文件。该脚本正在工作并写入一些日志,文本,一些其他文件,我想找到确切涉及的文件。有可能吗?

我尝试使用find来做,首先创建具有特定时间戳的文件temp.cnewer:

touch temp.cnewer -t 201012091145

然后找到创建后修改的所有文件:

find / -type f -newer temp.cnewer

但它显示的结果太多了。当我检查其中几个的统计数据时,它表明修改时间是在未来的时间(不知道它是如何发生的,系统时间是正确的):...

Access: 2010-12-09 18:09:14.214730466 +0000
Modify: 2010-12-09 18:09:14.214730466 +0000
Change: 2010-12-09 18:09:14.214730466 +0000

还有其他方法可以选择这些文件吗?

3 个答案:

答案 0 :(得分:4)

根据文件保持打开的时间长短,lsof命令可能会执行您想要的操作。另一种选择是在strace下运行它并查找文件打开系统调用。

答案 1 :(得分:2)

看起来您的修改时间是UTC(时区+0000),这就是为什么它看起来像以后一样。我相信touch -t也使用UTC,这可以解释额外的结果。如果使用UTC设置temp.cnewer文件的修改时间,原始方法可能会正常工作。

答案 2 :(得分:1)

它仍然打开文件,你可以找到脚本的pid然后

ls -l / proc / PIDNUMBER / fd