Obecnie analizuję dzienniki apache za pomocą tego polecenia:
tail -f /opt/apache/logs/access/gvh-access_log.1365638400 |
grep specific.stuff. | awk '{print $12}' | cut -d/ -f3 > ~/logs
Dane wyjściowe to lista domen:
www.domain1.com
www.domain1.com
www.domain2.com
www.domain3.com
www.domain1.com
W innym terminalu uruchamiam to polecenie:
watch -n 10 'cat ~/logs | sort | uniq -c | sort -n | tail -50'
Dane wyjściowe to:
1023 www.domain2.com
2001 www.domain3.com
12393 www.domain1.com
Używam tego do monitorowania statystyk apache w czasie rzeczywistym. Problem polega na tym logs
bardzo szybko się bardzo duże. Nie potrzebuję dzienników w żadnym innym celu niż uniq -c
.
Moje pytanie brzmi: czy jest jakiś sposób na uniknięcie używania pliku tymczasowego? Nie chcę ręcznie zapisywać własnego licznika w wybranym języku, chciałbym użyć niektórych awk
magia, jeśli to możliwe.
Zauważ, że odkąd muszę użyć sort
, Muszę użyć pliku tymczasowego w tym procesie, ponieważ sortowanie strumieni jest bez znaczenia (chociaż nie jest to uniq).