Как работает связка tail grep tee ????

Всем доброго!
Вопрос к профи, выполняю следующую команду
tail -f /var/log/messages | grep 'FORMERR resolving' | tee -a /var/log/expolit_hack.log
результат создается файл но пустой, никакие события в нем не фиксируется после фильтра, в чем может быть прикол?

Заранее всем спасибо!

Может, grep ничего не нашел ?

Может, grep ничего не нашел ? Да и вместо tee можно было бы просто:

tail -f /var/log/messages | grep 'FORMERR resolving' >> /var/log/expolit_hack.log

Все мы, рано или поздно, будем там...

tee в данном случае для того,

tee в данном случае для того, чтоб данные не только в лог-файл попадали, но и отображались на экране

Надо внимательно читать

Надо внимательно читать мануал по tail. Если на момент вызова tail -f не было изменений в файле, то stdout от tail будет пуст. Далее grep конечно же ничего не находит, ну и вслед за ним tee ничего не выведет. однако результирующий файл создаст, как того и затребовал автор.

Автор - вы хотите что-ли, чтобы из лога в ваше exploit_hack.log ложились в реалтайме только определенные вами сообщения по фильтру? Так все современные логгеры умеют по регулярному выражению отфильтровывать сообщения из лога и раскладывать их куда вам надо. Изобретаете велик в очередной раз, причем трехколесный детский

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

команда tee просто копирует

команда tee просто копирует все, что поступает не ее стандартный ввод, на стандартный вывод и в файлы, указанные в аргументах. То есть в вашем случае вывод пойдет одновременно на терминал и в файл /var/log/expolit_hack.log

tail -f /var/log/messages |

tail -f /var/log/messages | grep --line-buffered 'FORMERR resolving' | tee -a /var/log/expolit_hack.log

Если ничего не было, то как могло что-то появиться? А если все-таки что-то было, то откуда тогда оно взялось? Нашу Вселенную породила Рекурсия!

Много было сказано и нету ни

Много было сказано и нету ни одно предложения, того что мне нужно.
Оговорюсь я особо не силен в линухе, вот почему задаю тут вопрос, если у вас есть время на флуд, то может вы еще выделите его на конкретный пример???
На счет было или не было, конечно было фильтруемое событие, сама связка не была придумана мной, искал решение проблемы, нашел это, но проблему оно не решила, зато породило много пустого разговора.
И так господа, есть простое решение вопроса или нет, если есть можно пример?

Заранее всем спасибо!

Вас опция --line-buffered к

Вас опция --line-buffered к grep чем не устраивает?
В одном случае grep выполняет flush() по заполнении буфера, в другом - построчно. Если Вы посылаете SIGINT grep-у, последний завершает выполнение, не сбрасывая буфер.

Если ничего не было, то как могло что-то появиться? А если все-таки что-то было, то откуда тогда оно взялось? Нашу Вселенную породила Рекурсия!

backbone написал(а): Вас

backbone написал(а):
Вас опция --line-buffered к grep чем не устраивает?
В одном случае grep выполняет flush() по заполнении буфера, в другом - построчно. Если Вы посылаете SIGINT grep-у, последний завершает выполнение, не сбрасывая буфер.

Thx a lof of much!!!!

Прочитайте, что делают

Прочитайте, что делают команды tail, grep, tee, и что делают опции -f -а как только вы будете знать что делает каждая команда в отдельности и что дают | и >> вы сами за за минуту найдете в чем проблема.

ps команда тривиальная и рабочая. правильная ли она в ваших условиях - сказать не хватает данных.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".