如何监控文件是否被创建?

如何监控文件是否被创建?

例如,我需要监视是否文件/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等待写入它,而您的脚本从中读取。

相关内容