2

我想监视我服务器上的目录是否有添加(或文件更新),当添加某些内容时,运行一个 php 脚本。

我看到有watch,但我不确定如何使用它。

我知道watch -d ls -l会跟踪文件列表中的更改,但是如何将更改的文件通过管道传输到 php 脚本?另外,如何查看不是新文件但已更新的文件?

我可以将它与配置文件(哪些目录等)一起运行,以便最终用户轻松设置吗?

4

2 回答 2

2

您可以在 bash 脚本中使用 inotifywait(来自 inotify-tools)。

while read file; do
    php some_script.php "$file"
done < inotifywait -e create,delete,move,modify -m . --format "%w%f" $dir

%w%f会给你文件路径。如果您还需要事件添加%e. 有关更多格式选项和事件名称,请参阅手册页。

另一种可能性是 incron,但这需要一个系统守护进程。

于 2011-11-17T18:55:08.613 回答
0

每次我用过手表,它似乎都在消耗当前的控制台/tty。可能不是管道到 php 脚本的最佳工具。

我会采取的一种方法是让一个 php 脚本执行目录列表,存储在 SQLite 等数据库中,然后比较差异,因为它是一个 php 脚本,它可以将信息传递给其他 php 脚本或脚本的其余部分并入。您可以让 cron 运行您的 php 脚本。

于 2011-11-17T18:49:32.063 回答