服务器正在积极地写入某个文件。如何找到接收大量 I/O 的文件?
答案1
尝试 iotop。在 Debian/Ubuntu 上:
apt-get install iotop
然后iotop
将显示每个进程的 I/O。然后,您可以检查相关进程的文件描述符,看看是否需要更多数据 - 例如使用ls -l /proc/<PID>/fd
或lsof -p <PID>
。
答案2
由于 I/O 统计不可用,也许您可以使用基于 inotify 的解决方案。这从 2.6.13 开始包含在内核中。使用inotifywatch从inotify 工具你可以使用 来监视系统中任何文件的更改inotifywatch -r /
。建立所有监视点需要很长时间,你可能需要增加/proc/sys/fs/inotify/max_user_watches. Inotifywatch 将一直运行,直到您使用以下命令中断它Ctrl-C中断后,对于每个被访问的文件,它将统计所执行的操作。例如
$ inotifywatch -r ~
Establishing watches...
Finished establishing watches, now collecting statistics.
total access modify close_write open moved_from moved_to create filename
6099 0 6092 2 2 1 1 1 /home/example/foo