14

我在 IOStat 中发现,我的应用程序的某些部分正在大量编写,但我不知道它是哪个进程以及它正在写入哪些文件。在 Vista 中有一个工具可以显示最近 30 秒内处于活动状态的文件。Linux有类似的东西吗?

4

7 回答 7

9
strace -e trace=file -- <command>

将准确显示您的应用程序正在读取和写入的文件

于 2009-07-25T22:45:57.490 回答
8

如果要实时查看所有文件访问(最多 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'` 
于 2012-07-25T10:30:26.590 回答
3

要在特定特定目录及其子目录中查找过去 24 小时(最后一整天)内修改的所有文件:

查找 /directory_path -mtime -1 -print

更多在:

http://www.mydigitallife.info/2006/01/19/find-files-that-are-modified-today-or-since-certain-time-ago-in-unix/

于 2009-07-25T20:54:53.503 回答
3

您正在寻找的是lsof. 它是一个命令行工具,但在 sourceforge也有一个GUI 。

于 2009-07-25T21:00:22.197 回答
3

lsof 将列出给定进程的所有打开文件:

lsof -p

于 2009-07-25T21:06:12.433 回答
2

不确定程序,但实用程序中的 find 命令有很多选项,可让您查找在特定时间段内已修改的文件和/或目录。

例如:

$ find /home/you -iname "*.txt" -mtime -1 -print

将找到 1 天前最后修改的文本文件。

您可以将此调用包装在某种脚本中,或者编写自己的快速小应用程序来使用结果。

这是一个包含更多信息和示例的站点:

http://www.cyberciti.biz/faq/howto-finding-files-by-date/

于 2009-07-25T20:57:24.527 回答
1

Linux 提供了一个名为“dnotify”的文件更改通知 API,以及一个命令行实用程序dnotify。您可以使用它来跟踪过去 30 年代的变化。

我可能会编写一个直接构建在 Linux API 上的应用程序,并丢弃所有超过 30 秒的事件。

于 2009-07-25T21:03:30.927 回答