我不知道人们如何将内容上传到此文件夹,但您可能希望使用比使用inotify监视目录更低技术的东西.
如果协议是FTP并且您可以访问FTP服务器的日志,我建议拖尾该日志以观察上传成功.与使用传统cron的轮询方法相比,这种事件触发的方法将更快,更可靠,负载更少,并且比使用inotify的方法更便携,更易于调试.
处理此问题的方式当然取决于您的FTP服务器.我有一个运行vsftpd,其日志包括这样的行:
Fri May 25 07:36:02 2012 [pid 94378] [joe] OK LOGIN: Client "10.8.7.16"
Fri May 25 07:36:12 2012 [pid 94380] [joe] OK UPLOAD: Client "10.8.7.16", "/path/to/file.zip", 8395136 bytes, 845.75Kbyte/sec
Fri May 25 07:36:12 2012 [pid 94380] [joe] OK CHMOD: Client "10.8.7.16", "/path/to/file.zip 644"
仅当vsftpd成功保存文件时才会添加UPLOAD行.您可以在shell脚本中解析此问题,如下所示:
#!/bin/sh
tail -F /var/log/vsftpd.log | while read line; do
if echo "$line" | grep -q 'OK UPLOAD:'; then
filename=$(echo "$line" | cut -d, -f2)
if [ -s "$filename" ]; then
# do something with $filename
fi
fi
done
如果您使用的是HTTP上传工具,请查看该工具是否具有用于记录传入文件的文本日志文件.如果它不考虑添加某种记录器功能,那么它将产生你可以尾随的日志.