2011-01-27 9 views
1

전체 서버에 대한 트래픽을 포함하는 로그 파일이 있습니다. 서버는 여러 도메인을 담당하지만, 계산할 PDF 파일은 모두/some/directory /에 있습니다.Apache 로그 파일에서 다른 PDF 파일에 액세스하는 횟수를 어떻게 계산합니까?

필자가 'pdf'확장자를 grep하면 원하는 모든 PDF 파일 목록을 얻을 수 있다는 것을 알고 있습니다.

어떻게하면 각 PDF가 명령 줄에서 개별적으로 액세스 된 횟수를 계산할 수 있습니까?

답변

2

이것은 한 줄보다 약간 길지만 더 나은 요약을 제공합니다. 당신은 PDF 파일의 경로와 아파치 access_log가 파일을 사용하여이 작업을 수정하고 바로 명령 줄에 붙여 또는 bash는 스크립트에 넣어 수 있습니다

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

사용 grep은 PDF로 행을 식별하고 wc -l은 행이 발견 카운트 :

grep /your/pdf logfile | wc -l 

또한 302 WRT 200 개 응답을 확인 할 수 있습니다 - 사용자가 페이지 또는 액세스에만있는 경우, 즉 전체 문서 (일부 PDF 리더는 한 번에 한 페이지 씩만로드)

+1

-1 '화장실 -l' 수상 HTTP의 쓸모 사용 : //partmaps.org/era/unix/award.html#wc – dogbane

+0

죄송합니다. 작동하는 것처럼 쓸모가 없습니다. 'grep -c'의 해결책은 좀 더 우아합니다. –

1

로그에있는 pdf 파일의 이름은 Grep이며 -c 옵션을 사용하여 어커런스를 계산합니다. 예를 들면 : 당신이 수백 개의 파일이있는 경우

grep -c myfile.pdf apache.log 

는 모든 파일 이름의 목록, 예를 들어, 함께 하나의 파일을 생성

$ cat filelist.txt 

foo.pdf 
bar.pdf 

다음 각 pdf 파일 로그에 발생 횟수이 인쇄됩니다 루프

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

에서 GREP을 사용합니다.

+0

약 100 개의 개별 PDF 파일을 찾아 개별적으로 통계를 얻어야합니다. – blackrobot

+0

답변을 업데이트했습니다. – dogbane

관련 문제