Files

如何監控文件是否被創建?

  • April 18, 2017

例如,我需要監視文件**/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寫入它,而您的腳本從中讀取。

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