tail -f с фильтром

Очень удобно смотреть некоторые логи с помощью tail -f logfile — на экране показывается в real time все попадающее в лог файл. Но когда в файл записывается ну слишком много всего и вывод совершенно невозможно читать.

Хочется иметь возможность фильтровать вывод, но так же получать его на экран в режиме реального времени. Как оказалось — это очень просто:


root@mail:/var/log# tail -f mail.log|grep “connect from”
Dec 23 12:09:35 mail postfix/smtpd[1940]: connect from unknown[A.B.C.D]
Dec 23 12:09:36 mail postfix/smtpd[1938]: disconnect from unknown[A.B.C.D]
Dec 23 12:09:36 mail postfix/smtpd[2522]: connect from host[A.B.C.D]
Dec 23 12:09:36 mail postfix/smtpd[1955]: disconnect from unknown[A.B.C.D]
Dec 23 12:09:37 mail postfix/smtpd[2513]: connect from host[A.B.C.D]
Dec 23 12:09:37 mail postfix/smtpd[2502]: connect from unknown[A.B.C.D]
Dec 23 12:09:37 mail postfix/smtpd[1432]: disconnect from host[A.B.C.D]
Dec 23 12:09:38 mail postfix/smtpd[1367]: disconnect from unknown[A.B.C.D]
Dec 23 12:09:38 mail postfix/smtpd[1977]: disconnect from unknown[A.B.C.D]
Dec 23 12:09:38 mail postfix/smtpd[1940]: disconnect from unknown[A.B.C.D]
Dec 23 12:09:39 mail postfix/smtpd[2455]: disconnect from unknown[A.B.C.D]
Dec 23 12:09:39 mail postfix/smtpd[2471]: disconnect from unknown[A.B.C.D]

Но иногда хочется ставить не один фильтр, а несколько. Но, как выясняется, несколько грепов подряд — не работает. Решение так же существует и оно очень простое — у всех грепов, кроме последнего добавляется параметр — –line-buffered:


root@mail:/var/log# tail -f mail.log|grep –line-buffered “connect from”|grep -v “disconnect”
Dec 23 12:13:04 mail postfix/smtpd[1941]: connect from host[A.B.C.D]
Dec 23 12:13:04 mail postfix/smtpd[2455]: connect from host[A.B.C.D]
Dec 23 12:13:05 mail postfix/smtpd[1955]: connect from unknown[A.B.C.D]
Dec 23 12:13:06 mail postfix/smtpd[1980]: connect from host[A.B.C.D]
Dec 23 12:13:06 mail postfix/smtpd[1940]: connect from unknown[A.B.C.D]
Dec 23 12:13:07 mail postfix/smtpd[1978]: connect from host[A.B.C.D]
Dec 23 12:13:07 mail postfix/smtpd[2502]: connect from unknown[A.B.C.D]
Dec 23 12:13:09 mail postfix/smtpd[2513]: connect from unknown[A.B.C.D]
Dec 23 12:13:11 mail postfix/smtpd[1432]: connect from host[A.B.C.D]

PS найдено на форуме убунту.

Tags:

Wednesday, December 24th, 2008 Uncategorized