2016-10-25 6 views
0

ここにいくつかのアドバイスを探しています。Apache2で特定のファイルが何回要求されたかを記録する

AWStatsなどを使用してこれを行うことができますが、これは私がここでやりたいことを過剰にしているようです。

Webルートに数千のXMLファイルを含むディレクトリがあります。 これらはすべて、URLでGETリクエストを使用して単一のswfファイルへの呼び出しによってロードされます。

例:

https://www.example.com/myswf.swf?url=https://www.example.com/xml/1234567.xml 

URLが動的に構築され、そのうちの何千ものがあります。すべて同じswfファイルを指しますが、XMLディレクトリから別のXMLファイルを取得します。

私が探しているのは、個々のXMLファイルのそれぞれがテキストファイルに何回要求されたかを記録することです。

ターゲットディレクトリが分かっているので、XMLディレクトリを監視し、タイムスタンプで各ヒットを記録するbashスクリプトなどを実行できますか?

例:

1234567.xml | 1475496840 
7878332.xml | 1481188213 
etc etc 

任意の提案ですか?

+0

を出力 - フォーマットされましたか? – VM17

+0

動的に生成された(ワードプレス)ページです。彼らは実際にswfプレーヤーを表示するポッドキャスト用のOGメタタグであり、Facebook上にロードされたコンテンツ(XML)です。 – Grant

+0

私が知っているところでは、すべてのリクエストURLを持つ巨大なファイルがある場合(または複数のファイルをこの形式に追加することができます)、単純な 'grep -c -fインデックスファイル 'が必要です。 'index'にすべての.xmlファイル名が含まれ、' file'はすべてのURLの合計リストです。 – VM17

答えて

0

これは、エレガントなawk配列ではなく、テキストを処理するためにループを使用するため、醜い方法ですが、(ゆっくりと)動作するはずです。最適化が必要です。

私はすべてのあなたの要求のURLがファイルであると仮定していますが

#Put all the unique URLs in an index file 

awk -F/ '{print $8}' requests.txt | sort -u > index 

#Look through the file to count the number of occurrences of each item. 

while read i 
do 
    echo -n "$i | " 
    grep -c -w "$i" requests.txt 
done < index 
1

、シンプルより直接的アプローチ

私はすべてのあなたの要求のURLがでていると仮定してい
uniq -c requests.txt 

requests.txtと呼ばれますファイルrequests.txtとなります。

ベターでは、これらの要求のURLが格納されている

awk -F/ '{print $8}' requests.txt | uniq -c 
+0

これは、Varunに感謝します。 – Grant

関連する問題