使用 shell 脚本监视目录

使用 shell 脚本监视目录

我正在寻找类似内核的 inotify 函数的 shell 命令。

是否有一个命令可以监视目录,可以像这样使用:

while [ 1 ]; do
   name-of-monitor-program . && echo "something changed"
done

答案1

你正在寻找的是因克龙

incronincrontabinotifycron 应用程序,它们不根据时间触发事件,而是监视某个文件夹/文件,并根据该文件夹/文件发生的情况触发脚本/命令,甚至将该文件/文件夹的名称插入到命令中。

事件解释如下:http://linux.die.net/man/5/incrontab

一个典型的用例是“监视此文件夹中通过 (S)FTP 转储的传入文件并对其进行转码”,而不是每分钟运行一次并检查新文件的 cron。

还值得注意的是,开发人员将其归类incron为 Alpha 软件。我之前在生产环境中使用过它,没有任何问题,但值得考虑。

答案2

我发现iwatch

apt-cache search inotify我不知道为什么在问这个问题之前我没有想到这么做。

以下是我的使用方法:

iwatch -r -c "PATH=$PATH; program-i-wanted-to-run" .

我必须传递 PATH 环境变量,因为当程序生成时它不会继承 shell 的环境变量。

相关内容