Files
如何監控文件是否被創建?
例如,我需要監視文件**/tmp/somefile123是否是在某些事件之後創建的。我嘗試使用inotifywait**但這裡有一個問題:
# inotifywait -q -e create /tmp/somefile?* Couldn't watch /tmp/somefile?*: No such file or directory
因為完全沒有這樣的文件,我想知道它是否會在那裡!
我該如何解決這個問題?
UPD:也許如果我解釋我想要達到的目標會更清楚。
我需要以最少的 CPU 消耗編寫 shell 腳本(sh),如下所示:
if [ $(inotifywait -e create $SPECIFIC_FILE) ]; then blah-blah-blah some actions fi # And then similarly monitor if this file was deleted and then do another actions
我希望該腳本將在inotifywait -e create $SPECIFIC_FILE上停止執行,直到不會創建此 $SPECIFIC_FILE 並且這樣會更好
while [ ! -f $SPECIFIC_FILE ]; do blah-blah-blah some actions sleep 1 done
通過inotifywait檢查父目錄:
/tmp$ inotifywait -e create -d -o /home/me/zz /tmp /tmp$ touch z1 /tmp$ cat ~/zz /tmp/ CREATE z1
您還可以使用*-timefmt選項指定事件的時間格式。另外,如果你想通過執行一些腳本文件立即採取行動,例如,你可以在腳本文件中使用tail -f來持續監控日誌文件,這裡是/home/me/zz*,或者你可以創建一個命名管道文件並讓inotifywait寫入它,而您的腳本從中讀取。