rsyslog не улавливает вывод?

rsyslog не улавливает вывод?

Я могу толкать / изкоманда для rsyslog выглядит так:

ping www.superuser.com 2>&1 | logger -p user.info

В моей системе "живой" вывод можно посмотреть с помощью простого tail -f /var/log/messages. Он попадает туда из-за соответствующей строки в моем /etc/rsyslog.config:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                -/var/log/messages

Однако для моей пользовательской программы это не работает:

myprogram 2>&1 | logger -p user.info

Бинарник myprogram не возвращается/не выходит сразу после вызова - он будет работать некоторое время - и время от времени выводить сообщения (используя printf) на консоль. Он ведет себя так, если я не передаю его вывод в logger. Поправьте меня, если я не прав, но это поведение похоже накоманда (по крайней мере, по достижении пункта назначения).

Почему же тогда я не вижу вывода моей программы в /var/log/messages? Может ли вывод быть каким-то образом буферизован и он просто еще не попадает в logger? Может ли быть что-то еще в rsyslog.confстроке конфигурации?

решение1

Оказалось, что это был выход из myprogramбуферизации. Используя упомянутые трюкив этом вопросеЯ придумал быстрое решение:

script -q -c "myprogram" | logger -p user.info

Связанный контент