如果创建、删除或修改目录中的文件,如何使用 inotifywait 执行命令?

如果创建、删除或修改目录中的文件,如何使用 inotifywait 执行命令?

这是我到目前为止得到的 shell 脚本。我希望它递归地检查,因此有以下选项:

  • -r对于递归
  • -m用于监控
  • -e用于事件通知和跟踪

由于我不知道的原因,这种方法不起作用。我正在使用 rm/nano/touch 等创建/修改/删除文件,在终端中运行脚本时,我收到一条消息,说明已使用特定操作、使用该操作的位置以及使用该文件的位置,/home/stephen/ CREATE test例如test 是我使用 touch 创建的文件。

#!/bin/sh
while inotifywait -mre create,delete,modify /home;do
       echo "test"
done

答案1

我相信 inotifywait -m 不会退出,导致 while 循环未按预期运行。

while inotifywait -r /home -e create,delete,modify; do { echo "test"; }; done但是应该按您的预期工作。

答案2

我会改变你循环的位置。我会保持监视模式,这样您就不必继续启动该inotifywait过程,从而限制错过事件的机会:

inotifywait -mre create,delete,modify /home | while read dirname events basename;
do
       echo "test $dirname $events $basename"
done

相关内容