我需要制作一个脚本,在新文件进入目录时通知日志文件。我想将inotify用作shell脚本或PHP,我发现的大多数示例都在C中。有人可以给我一个示例吗?
此外,inotify可以知道何时复制完文件吗?
每当在logfile
中创建文件时,此Shell命令将写入/path/to/dir
:
inotifywait -m -e create /path/to/dir >>logfile
说明:
-m
告诉inotifywait继续运行。默认是在第一个事件后退出
-e create
告诉inotifywait仅报告文件create事件。 (根据您要完成的工作,您可能对close事件更感兴趣。)
/path/to/dir
是要监视的目标目录。除非指定了递归选项-r
,否则不会监视子目录。
>>logfile
告诉shell将所有输出重定向到文件logfile
。如果不使用此部分,则输出将定向到stdout,您可以在创建文件时实时观看。
inotifywait
将报告几个不同的事件。例如,当我从另一个窗口写入文件时,我在一个窗口中运行了inotifywait
:
$ inotifywait -m .
Setting up watches.
Watches established.
./ OPEN myfile
./ MODIFY myfile
./ MODIFY myfile
./ MODIFY myfile
./ CLOSE_WRITE,CLOSE myfile
因为以上没有重定向,所有输出都出现在终端上。
OPEN事件表示文件的初始创建。 CLOSE事件表示该过程已完成。
inotifywait
将显示给您的确切事件集取决于您正在监视的系统调用的程序使用的系统。做类似上面的测试以找出答案。