我在IOStat中发现,我的应用程序的某些部分正在广泛编写,但我不知道它是哪个进程以及它正在写入哪些文件。在Vista中有一个工具,它显示了在过去30秒内处于活动状态的文件。 Linux有类似的东西吗?
答案 0 :(得分:8)
strace -e trace=file -- <command>
将准确显示您的应用程序正在阅读和编写的文件
答案 1 :(得分:6)
如果要实时查看所有文件访问(最多32个进程),可以使用以下命令:
strace -f -e trace=file `ps aux | tail -n +2 | awk '{ORS=" "; print $2}' | sed -e 's/\([0-9]*\)/\-p \1 /g' | sed -e 's/\-p $//g'`
答案 2 :(得分:3)
查找最后修改的所有文件 一个小时24小时(最后一整天) 特定的特定目录及其 子目录:
find / directory_path -mtime -1 -print
更多信息:
答案 3 :(得分:3)
您要找的是lsof
。
它是一个命令行工具,但也有一个GUI for it at sourceforge。
答案 4 :(得分:2)
不确定程序,但实用程序中的find命令有很多选项,可以让您查找在特定时间段内修改过的文件和/或目录。
例如:
$ find /home/you -iname "*.txt" -mtime -1 -print
会找到上次修改过的文本文件。
您可以将此调用包装在某种脚本中,也可以编写自己的快速小应用程序来使用结果。
这是一个包含更多信息和示例的网站:
答案 5 :(得分:2)
lsof将列出给定流程的所有打开文件:
lsof -p
答案 6 :(得分:1)
Linux提供名为“dnotify”的文件更改通知API以及命令行实用程序dnotify。您可以使用它来跟踪过去30年代的变化。
我可能会编写一个直接在Linux API上构建的应用程序,并丢弃所有超过30秒的事件。