Linux 服务器正在写入哪个文件?

Linux 服务器正在写入哪个文件?

服务器正在积极地写入某个文件。如何找到接收大量 I/O 的文件?

答案1

尝试 iotop。在 Debian/Ubuntu 上:

apt-get install iotop

然后iotop将显示每个进程的 I/O。然后,您可以检查相关进程的文件描述符,看看是否需要更多数据 - 例如使用ls -l /proc/<PID>/fdlsof -p <PID>

答案2

由于 I/O 统计不可用,也许您可​​以使用基于 inotify 的解决方案。这从 2.6.13 开始包含在内核中。使用inotifywatchinotify 工具你可以使用 来监视系统中任何文件的更改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

相关内容