用intify通知新文件

问题描述 投票:2回答:1

我需要制作一个脚本,在新文件进入目录时通知日志文件。我想将inotify用作shell脚本或PHP,我发现的大多数示例都在C中。有人可以给我一个示例吗?

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

php shell inotify
1个回答
4
投票

每当在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将显示给您的确切事件集取决于您正在监视的系统调用的程序使用的系统。做类似上面的测试以找出答案。

© www.soinside.com 2019 - 2024. All rights reserved.