Linux

為什麼 inotifywatch --recursive /proc -v 不能看到 /proc 中所有創建的目錄?

  • July 13, 2020

在一個終端中,我執行以下命令,/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能夠輸出幾個目錄(見上文)?

我也試過執行inotifywatchusing 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/"

您無法/proc使用 inotify 觀看或任何其他偽 fs。

inotify(7)

Inotify 僅報告使用者空間程序通過文件系統 API 觸發的事件。因此,它不會擷取網路文件系統上發生的遠端事件。(應用程序必須回退到輪詢文件系統以擷取此類事件。)此外,各種偽文件系統,如 /proc、/sys 和 /dev/pts 無法使用 inotify 進行監控。

引用自:https://unix.stackexchange.com/questions/597335