我需要创建一个脚本,当新文件进入目录时通知日志文件。我想使用inotify作为shell脚本或PHP,我发现的大部分示例都在C中。有人可以给我一个例子吗?
另外,可以知道文件何时被复制?
答案 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
将向您显示的确切事件集取决于您正在监视的程序使用的系统调用。做一个像上面这样的测试来找出答案。