inotifywait没有反应

我有一个非常简单的脚本来logging什么时候创build新文件,实际上,为了testing的目的,我告诉它要监视任何事件。

#!/bin/sh WATCHED_DIR="/var/www/html/magento/media/tmp/catalog/product" echo "Watching directory: $WATCHED_DIR for events" inotifywait -m -q -r "$WATCHED_DIR" --format "%|e %w%f" | while read resp do echo "$resp" >> watcher.log done 

当我在watch目录中创build一个文件时,它会作出反应并logging下来

 CREATE /var/www/html/magento/media/tmp/catalog/product/2/1/new file OPEN /var/www/html/magento/media/tmp/catalog/product/2/1/new file CLOSE_WRITE|CLOSE /var/www/html/magento/media/tmp/catalog/product/2/1/new file OPEN /var/www/html/magento/media/tmp/catalog/product/2/1/new file CLOSE_NOWRITE|CLOSE /var/www/html/magento/media/tmp/catalog/product/2/1/new file OPEN|ISDIR /var/www/html/magento/media/tmp/catalog/product/2/1 OPEN|ISDIR /var/www/html/magento/media/tmp/catalog/product/2/1/ OPEN /var/www/html/magento/media/tmp/catalog/product/2/1/new file CLOSE_NOWRITE|CLOSE /var/www/html/magento/media/tmp/catalog/product/2/1/new file CLOSE_NOWRITE|CLOSE|ISDIR /var/www/html/magento/media/tmp/catalog/product/2/1 CLOSE_NOWRITE|CLOSE|ISDIR /var/www/html/magento/media/tmp/catalog/product/2/1/ OPEN /var/www/html/magento/media/tmp/catalog/product/2/1/new file CLOSE_NOWRITE|CLOSE /var/www/html/magento/media/tmp/catalog/product/2/1/new file OPEN /var/www/html/magento/media/tmp/catalog/product/2/1/new file CLOSE_NOWRITE|CLOSE /var/www/html/magento/media/tmp/catalog/product/2/1/new file 

但是当apache创build一个文件时,什么都不logging

唯一的区别是我可以发现当apache创build文件时,文件被apache拥有,当我创build文件时,它由root拥有。

 -rwxrwxrwx. 1 apache apache 55659 Feb 11 16:46 2164.jpg -rw-rw-r--. 1 root root 0 Feb 11 17:02 new file 

观察者脚本以root身份运行。

 FS UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 0 29137 2705 0 80 0 - 26538 wait pts/14 00:00:00 test.sh 1 S 0 29139 29137 0 80 0 - 26538 pipe_w pts/14 00:00:00 test.sh 

有谁知道解决scheme?

您正在使用recursion模式,它会自动为所有子目录添加监视。 每个用户的inode手表的最大值是8192,在/ var / www / html / magento / media / tmp / catalog / product下有8192个以上的目录吗?

 find /var/www/html/magento/media/tmp/catalog/product -type d | wc -l 

如果它大于8192,则可以按照手册页的build议进行操作:写入/ proc / sys / fs / inotify / max_user_watches

此外,可能看起来很愚蠢,但是在您提供的数据中,我们可以看到apache文件是在由root创build的文件前16分钟创build的。 你确定 2月11日16:46 之前发表了你的剧本吗? 另外,如果你之前启动了它,那么你可能没有收到这个事件,因为程序仍然recursion地创build了inode手表,而且由于使用了“-q”选项,所以你无法知道这个阶段是什么时候完成。

似乎需要一段时间才能开始录制,但最终确实是这样,它不报告CLOSE_WRITE,而是报告MOVED_TO

 CREATE|ISDIR /var/www/html/magento/media/tmp/catalog/product/i OPEN|ISDIR /var/www/html/magento/media/tmp/catalog/product/i CLOSE_NOWRITE|CLOSE|ISDIR /var/www/html/magento/media/tmp/catalog/product/i MOVED_TO /var/www/html/magento/media/tmp/catalog/product/i/n/intelcorei5.jpg ATTRIB /var/www/html/magento/media/tmp/catalog/product/i/n/intelcorei5.jpg ATTRIB /var/www/html/magento/media/tmp/catalog/product/i/n/intelcorei5.jpg