Я ищу команду или сценарий bash, который может выполнять следующее:
То есть: я хочу, чтобы "supermerge" объединял стандарт в потоке с содержимым, непрерывно записываемым в файл журнала (в этом примере var / log / messages). Результат должен быть выписан на стандарт.
Причина в том, чтобы сканировать определенные сообщения об ошибках, и эти сообщения могут быть записаны как в файл журнала, так и в стандартный файл.
Например:
my_strange_program /var/log/messages | supermerge /var/log/messages | my_log_scanner
Примечание: Файлы журнала могут чередоваться: messages, messages.1, messages.2 и т. Д. Таким образом, невозможно просто tail
файл, так как его можно переименовать.
Попробуй это:
my_strange_program /var/log/messages > /tmp/tmpfile | tail -F /var/log/messages /tmp/tmpfile | my_log_scanner
Есть инструмент под названием multitee. Похоже на то, что вы ищете. Я пытался понять, как это работает, но безрезультатно
Другой вариант - использовать мультитейл, если достаточно, чтобы слияние на экране
multitail -f /var/log/syslog -L "ping 4.2.2.1"