0

nginx または apacheの標準形式のログ ファイルを使用してcombined access_log、UNIX シェルで、特定のリファラーが一度持ち込んだ各訪問者 (つまり、IP アドレス) からの訪問数またはページ ビュー (つまり、合計要求数) をどのように計算しますか?

つまり、別のサイトであなたのサイトへのリンクを見つけた各訪問者によるすべてのリクエストの数です。

4

1 に答える 1

0

私が思いつく最高のスニペットは次のとおりです。

fgrep http://t.co/ /var/www/logs/access.log | cut -d " " -f 1 | \
fgrep -f /dev/fd/0 /var/www/logs/access.log | cut -d " " -f 1 | sort | uniq -c

これは何をしますか?

http://t.co/最初に、ログ エントリにある訪問の一意の IP アドレスを見つけます。(これは参照から直接来た訪問のみをカウントし、サイトにとどまってさらに閲覧した訪問はカウントしないことに注意してください。)

ある時点で特定の URL から参照された IP アドレスのリストを取得した後、そのようなアドレスからのすべてのヒットを見つけるために、そのようなリストを別のリストにパイプしfgrepます(非常に非効率的な代替手段はの代わりになります)。stdin/dev/fd/0xargs -n1 fgrep access.log -efgrep -f /dev/fd/0 access.log

2 番目の の後、最初のステップで取得したのと同じ IP アドレスのセットを取得しますが、fgrep今度はリクエストの総数に応じて繰り返されます。:)sortuniq -c

于 2013-03-02T02:35:37.487 に答える