在一个终端中,我运行以下命令,随着时间的推移,该命令会生成大量目录/proc
:
$ while true; do /bin/echo helloworld | cat -; echo $$; sleep 3s; done
然后几分钟后,我检查 的输出inotifywatch
,其中仅包含几个目录:
$ sudo inotifywatch --recursive /proc -v
Establishing watches...
Setting up watch(es) on /proc
OK, /proc is now being watched.
Total of 5718 watches.
Finished establishing watches, now collecting statistics.
^Ctotal access close_nowrite open filename
1558 540 509 509 /proc/
816 272 272 272 /proc/1529/
168 56 56 56 /proc/437/
105 35 35 35 /proc/3496/
57 19 19 19 /proc/1/
42 14 14 14 /proc/419/
38 22 8 8 /proc/1632/
21 7 7 7 /proc/1120/
12 4 4 4 /proc/sys/kernel/
12 4 4 4 /proc/211/
12 4 4 4 /proc/219/
6 2 2 2 /proc/292/
6 2 2 2 /proc/415/
6 2 2 2 /proc/568/
为什么无法inotifywatch --recursive /proc -v
看到所有创建的目录/proc
?
是因为这/proc
是一个伪文件系统并且inotifywatch
仅适用于真实文件系统吗?如果是这样,为什么inotifywatch
能够输出一些目录(见上文)?
我也尝试执行inotifywatch
using sudo
,但结果是相同的。
操作系统:
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
答案1
您无法/proc
使用 inotify 观看或任何其他伪文件系统。
Inotify 仅报告用户空间程序通过文件系统 API 触发的事件。因此,它不会捕获网络文件系统上发生的远程事件。 (应用程序必须回退到轮询文件系统以捕获此类事件。)此外,各种伪文件系统(例如 /proc、/sys 和 /dev/pts)无法使用 inotify 进行监视。