我想监视我服务器上的目录是否有添加(或文件更新),当添加某些内容时,运行一个 php 脚本。
我看到有watch
,但我不确定如何使用它。
我知道watch -d ls -l
会跟踪文件列表中的更改,但是如何将更改的文件通过管道传输到 php 脚本?另外,如何查看不是新文件但已更新的文件?
我可以将它与配置文件(哪些目录等)一起运行,以便最终用户轻松设置吗?
您可以在 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,但这需要一个系统守护进程。
每次我用过手表,它似乎都在消耗当前的控制台/tty。可能不是管道到 php 脚本的最佳工具。
我会采取的一种方法是让一个 php 脚本执行目录列表,存储在 SQLite 等数据库中,然后比较差异,因为它是一个 php 脚本,它可以将信息传递给其他 php 脚本或脚本的其余部分并入。您可以让 cron 运行您的 php 脚本。