2

В настоящее время я анализирую журналы apache с помощью этой команды:

tail -f /opt/apache/logs/access/gvh-access_log.1365638400  | 
grep specific.stuff. | awk '{print $12}' | cut -d/ -f3 > ~/logs

Вывод представляет собой список доменов:

www.domain1.com
www.domain1.com
www.domain2.com
www.domain3.com
www.domain1.com

Затем в другом терминале я запускаю эту команду:

watch -n 10 'cat ~/logs | sort | uniq -c | sort -n | tail -50'

Выход:

1023 www.domain2.com
2001 www.domain3.com
12393 www.domain1.com

Я использую это для мониторинга в квази-реальном времени Apache статистики. Проблема в том, что logs очень быстро увеличиваются. Мне не нужны журналы для каких-либо других целей, кроме uniq -c .

Мой вопрос: есть ли способ избежать использования временного файла? Я не хочу вручную раскручивать свой счетчик на своем языке, я бы хотел использовать магию awk если это возможно.

Обратите внимание, что, поскольку мне нужно использовать sort , я должен использовать временный файл в процессе, потому что сортировка по потокам не имеет смысла (хотя uniq - нет).

1 ответ1

0

Хотя это может указывать на очевидное, но вы пробовали это:

tail -f /opt/apache/logs/access/gvh-access_log.1365638400  | grep specific.stuff. | awk '{print $12}' | cut -d/ -f3 | sort | uniq | sort -n | tail -50

Я знаю, что это длинная командная строка, но она исключает создание промежуточного файла. Если это не работает для вас, не могли бы вы сказать, почему, чтобы вы могли получить более значимые ответы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .