如何计算在Apache日志文件中访问不同PDF文件的次数?

时间:2011-01-27 16:32:39

标签: command-line

我有一个日志文件,其中包含整个服务器的流量。服务器服务于多个域,但我知道我想要计算的所有PDF文件都在/ some / directory /中。

我知道如果我为'pdf'扩展名grep该目录,我可以得到我想要的所有PDF文件的列表。

如何计算从命令行单独访问每个PDF的次数?

3 个答案:

答案 0 :(得分:2)

这比一行长一点,但它会给你一个更好的总结。您可以使用pdfs和apache access_log文件的路径修改它,只需将其粘贴到命令行或将其放在bash脚本中

 for file in `ls /path/to/pdfs | grep pdf `
 do
  COUNT=`grep -c $file access_log`
  echo $file $COUNT
 done

答案 1 :(得分:1)

Grep获取日志中pdf文件的名称,并使用-c选项计算出现次数。例如:

grep -c myfile.pdf apache.log

如果您有数百个文件,请创建一个包含所有文件名列表的文件,例如

$ cat filelist.txt

foo.pdf
bar.pdf

然后在循环中使用grep

while read filename
do 
   COUNT=$(grep -c $filename apache.log) 
   echo $filename:$COUNT 
done < filelist.txt

这将打印出每个pdf文件在日志中出现的次数。

答案 2 :(得分:-2)

使用grep标识带有pdf的行,然后使用wc -l来计算找到的行数:

grep /your/pdf logfile | wc -l

您也可以检查302响应,即302,即如果用户只访问过一个页面或完整文档(某些pdf阅读器一次只加载一页)