使用inotify通知新文件

时间:2014-09-10 22:13:56

标签: php shell inotify

我需要创建一个脚本,当新文件进入目录时通知日志文件。我想使用inotify作为shell脚本或PHP,我发现的大部分示例都在C中。有人可以给我一个例子吗?

另外,可以知道文件何时被复制?

1 个答案:

答案 0 :(得分:3)

只要在logfile中创建文件,此shell命令就会写入/path/to/dir

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

说明:

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

  • 之后退出
  • -e create告诉inotifywait仅报告文件创建事件。

  • /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将向您显示的确切事件集取决于您正在监视的程序使用的系统调用。做一个像上面这样的测试来找出答案。