我需要制作一个脚本,当新文件进入目录时通知日志文件。我想使用 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/