php - 使用 inotify 通知新文件

标签 php shell inotify

我需要制作一个脚本,当新文件进入目录时通知日志文件。我想使用 inotify 作为 shell 脚本或 PHP,我发现的大多数例子都是用 C 语言编写的。有人能给我一个例子吗?

此外,inotify 可以知道文件何时完成复制吗?

最佳答案

每当在 /path/to/dir 中创建文件时,此 shell 命令都会写入 logfile:

inotifywait -m -e create /path/to/dir >>logfile

说明:

  • -m 告诉 inotifywait 继续运行。默认是在第一个事件后退出

  • -e create 告诉inotifywait 仅报告文件create 事件。 (根据您想要完成的任务,您可能对关闭事件更感兴趣。)

  • /path/to/dir 是要监视的目标目录。除非指定递归选项 -r,否则不会监视子目录。

  • >>logfile 告诉 shell 将所有输出重定向到文件 logfile。如果您关闭这部分,输出将定向到标准输出,您可以实时观看文件的创建。

监控更多事件

inotifywait 将报告几个不同的事件。例如,我在一个窗口中运行 inotifywait,同时从另一个窗口写入文件:

$ inotifywait -m .
Setting up watches.
Watches established.
./ OPEN myfile
./ MODIFY myfile
./ MODIFY myfile
./ MODIFY myfile
./ CLOSE_WRITE,CLOSE myfile

因为上面没有重定向,所以所有输出都出现在终端上。

OPEN 事件表示文件的初始创建。 CLOSE 事件表明该过程已完成。

inotifywait 将向您显示的确切事件集取决于您正在监视的程序使用的系统调用。做一个像上面这样的测试来找出答案。

关于php - 使用 inotify 通知新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25775942/

相关文章:

php - 从数据库中获取结果

php - 在 PHP 中使用多个条件访问嵌套的 MySQL Select。

shell - 如何将命令的输出分配给 Makefile 变量

linux - 更好的解析输入的方法

linux - 如何从标准输出和标准错误中删除 ^M

c++ - 关于让 inotify 线程休眠

PHP 将字符串转换为数组再转换为字符串

php - Laravel - 带有 blade compileString 的 php eval

Python:iNotify_Simple从其他目录获取文件

linux - Inotify 动态索引新文件夹