Я использую именованный канал для захвата сообщений syslog. Затем я могу легко просмотреть syslog, сделав что-то вродеFIFO to grep to file
cat /var/log/local3.pipe | grep somefilter
or
grep somefilter /var/log/local3.pipe
Оба эти вывода выводят системный журнал на консоль очень хорошо. Тем не менее, если я тогда хочу записать это в файл, я ничего не получаю, например
cat /var/log/local3.pipe | grep somefilter >> somefile.log
or
grep somefilter /var/log/local3.pipe >> somefile.log
Файл всегда остается равным нулю. Кто-нибудь знает, почему? Я использую Red Hat Enterprise Linux 5. Спасибо.
Дополнительная информация: Для тех, кто хочет воспроизвести это вот полный список команд
su
<enter root password>
mkfifo /var/log/local3.pipe
chmod 644 /var/log/local3.pipe
echo "local3.* |/var/log/local3.pipe" >> /etc/syslog.conf
/etc/init.d/syslog restart
exit
затем один SSH сессии:
cat /var/log/local3.pipe
и в второй SSH сессии ("Протестируйте «должен показать в первой сессии ssh
logger -p local3.info "Test it"
затем на первом сеансе измените его на
cat /var/log/local3.pipe >> somefile.log
отправить еще несколько журналов на местный 3 (сообщение должно быть разным). Убедитесь, что сообщения идут в somefile.log
logger -p local3.info "Test it 2"
затем в первой смены сессии он на
cat /var/log/local3.pipe | grep -i test >> somefile.log
Теперь убедитесь, что журналы не собираются somefile.log
Обратите внимание, что сообщение должен отличаться от последнего сообщения, иначе регистратор не отправит его немедленно.
Вы сначала делаете 'grep somefilter/var/log/local3.pipe' и только потом' grep somefilter /var/log/local3.pipe >> somefile.log'? Потому что содержимое трубы будет потреблено к тому времени. – Cairnarvon
Привет, Cairnarvon. Перед выполнением второй команды я всегда завершаю первую. Я могу переключаться назад и вперед между этими двумя командами, и первое всегда работает, а второе всегда приводит к нулевому байтовому файлу. Если я делаю cat /var/log/local3.pipe >> somefile.log, то это работает. Похоже, что включение grep в микс (и подключение к файлу) останавливает работу. – MikeKulls