例如,我需要监视是否文件/tmp/somefile123是在一些事件之后创建的。我尝试使用inotify等待但这里有一个问题:
# 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 创建 $SPECIFIC_FILE直到这个 $SPECIFIC_FILE 不会创建,然后它会更好
while [ ! -f $SPECIFIC_FILE ]; do
blah-blah-blah some actions
sleep 1
done
答案1
有了inotify等待检查父目录:
/tmp$ inotifywait -e create -d -o /home/me/zz /tmp
/tmp$ touch z1
/tmp$ cat ~/zz
/tmp/ CREATE z1
您还可以使用以下命令指定事件的时间格式-timefmt选项。另外,如果您想通过执行某些脚本文件立即采取行动,例如,您可以使用尾部-f在脚本文件中连续监控日志文件,这里/家/我/zz,或者您可以创建一个命名管道文件并有inotify等待写入它,而您的脚本从中读取。