在inotifywait手冊改變陳述Inotifywait對於大型目錄
-r,--recursive手錶作爲參數傳遞的任何目錄的所有子目錄下。手錶將遞歸設置爲無限深 。符號鏈接沒有被過濾。新創建的 子目錄也將被監視。
警告:如果您在觀看的 根目錄中的大樹下,使用此選項可能需要相當長一段時間,直到所有的inotify手錶 建立和事件不會在這個時候接收。 此外,由於每個子目錄將建立一個inotify手錶,因此可能會達到每個用戶手錶的最大數量 。默認最大值是8192;可通過寫入 /proc/sys/fs/inotify/max_user_watches來增加。
我認爲這意味着每次調用inotifywait
時,大型目錄都會有延遲。因此,不斷地監測大型目錄具有監視功能,像這樣
inotifywait -m /home/user/Documents
是不是通過像這樣的目錄(在手冊頁從一個例子)手動循環
while inotifywait /home/user/Documents; do
#Do Something for each file change
done
爲每次迭代更有效while循環,你必須再次建立inotifywait。但有了第一個選擇,我不能根據回報執行。理想的情況是什麼,我要的是像這樣
inotifywait -m --callback ./callback.sh /home/user/Documents
所以callback.sh
一個回調函數的inotifywait
返回值每次被調用。我將如何實現這一點?
我從來沒有用過Perl。我注意到很多示例使用C,但我更喜歡儘可能使用shell。 – puk
總是有機會使用命令的「-e」開關過濾事件,並且/或者讓do_something.sh grep相關參數的'$ LINE'。 –