我正在寻找类似内核的 inotify 函数的 shell 命令。
是否有一个命令可以监视目录,可以像这样使用:
while [ 1 ]; do
name-of-monitor-program . && echo "something changed"
done
答案1
你正在寻找的是因克龙。
incron
和incrontab
是inotify
cron 应用程序,它们不根据时间触发事件,而是监视某个文件夹/文件,并根据该文件夹/文件发生的情况触发脚本/命令,甚至将该文件/文件夹的名称插入到命令中。
事件解释如下: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 的环境变量。