5

Я хотел объединить два непрерывных текстовых потока, сгенерированных tail -f в один и посмотреть их на одном экране. Является ли это возможным? Оба текстовых потока ориентированы на строки (например, журналы), если это помогает.

Обновление: просто чтобы прояснить, что два потока tail -f находятся не в локальных файлах, а в двух удаленных сеансах SSH, например, ssh remote-host tail -f file.log

4 ответа4

8

tail поддерживает несколько файлов, например:

tail -q -f file1 file2
4

Если вы просто хотите просмотреть строки журнала и впоследствии не нуждаетесь в данных, почему бы и нет:

ssh host1 tail -f file & ssh host2 tail -f file &

Чтобы выполнить то, что вы говорите в комментарии, если у вас есть команда pee (moreutils):

pee 'ssh host1 tail -f file' 'ssh host2 tail -f file' < /dev/null
2

Быстрый и грязный способ, который приходит на ум, - это привязывать каждый файл журнала на каждой удаленной машине и перенаправлять их во временные файлы локально. Затем подключите оба бревна по методу, предложенному Голимаром.

  1. ssh user @ host1 -C tail -f /path /to /log >> /tmp/log1.tmp
  2. ssh user @ host2 -C tail -f /path /to /log >> /tmp/log2.tmp
  3. tail -q -f /tmp/log1.tmp /tmp/log2.tmp

Это не красиво, требует хранения локальных данных и требует, чтобы первые две команды были в фоновом режиме (или запущены на screen или аналогично), но это должно сделать работу!

1

Вы можете оформить заказ в личном журнале.

Я создал инструмент Java, способный читать локальные и удаленные файлы журналов, используя SSH. Это довольно просто в использовании.

Еще несколько объяснений: https://github.com/pschweitz/insidelog/wiki

Просто загрузите версию, соответствующую вашей операционной системе, с собственным исполняемым файлом jar release в вашей среде выполнения Java (требуется java 8_40 или выше):

https://github.com/pschweitz/insidelog/releases

Вы можете найти полную документацию (в том числе и на странице Github)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .