![如何在 Linux 中查看同时读取或写入哪些文件?](https://linux22.com/image/108434/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E6%9F%A5%E7%9C%8B%E5%90%8C%E6%97%B6%E8%AF%BB%E5%8F%96%E6%88%96%E5%86%99%E5%85%A5%E5%93%AA%E4%BA%9B%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在运行公司发行的 Red Hat Enterprise Linux 6.7 混音版本。时不时地,由于非连续的文件读取活动,我的硬盘驱动器会变慢,我相信这可能是由于公司发布的工作站安全执行应用程序不允许我关闭。我的计划是确定是否正在读取某个特定文件,如果是这种情况,请将这些文件移动到 USB 3.0 记忆棒,以便比机械硬盘驱动器更快地读取它们。
我搜索了这个问题的答案,但唯一的选择似乎是使用 Linux 审计子系统 ( auditd
),我不确定在我的整个根文件系统上使用它是否可行。
答案1
您可以使用inotifywait
它来监视文件读取。不幸的是,几分钟后,明显的调用在我的小虚拟机上崩溃并出现错误Couldn't watch /: Operation not permitted
:
inotifywait --monitor --recursive --event access /
但这是有效的:
find / -mount -type f |
sort |
inotifywait --fromfile - --monitor --recursive --event access
请注意,您可能需要增加目录监视的默认数量。这个小代码片段将向您显示您已配置的内容和您需要的内容,并在必要时增加它:
need=$(find / -mount -type d | wc -l)
got=$(cat /proc/sys/fs/inotify/max_user_watches)
echo "Got $got and need $need watches"
[[ $need -gt $got ]] && echo $((need + 100)) >/proc/sys/fs/inotify/max_user_watches