Linux為什麼
為什麼 inotifywatch --recursive /proc -v
不能看到 /proc
中所有創建的目錄?
在一個終端中,我執行以下命令,
/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
usingsudo
,但結果是一樣的。作業系統:
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 僅報告使用者空間程序通過文件系統 API 觸發的事件。因此,它不會擷取網路文件系統上發生的遠端事件。(應用程序必須回退到輪詢文件系統以擷取此類事件。)此外,各種偽文件系統,如 /proc、/sys 和 /dev/pts 無法使用 inotify 進行監控。