У меня есть веб-приложение, которое выводит ряд журналов с информацией о производительности. Один файл журнала выводит время выполнения кода, а другой выводит время SQL. У меня нет контроля над регистратором или кодом, который создает файлы журналов, но я хочу вывести журналы в одном месте.
В настоящее время я делаю что-то вроде этого
tail -f sqlLogs.log | grep sql-time
tail -f perflogs.log | grep exec-time
. Это выводит что-то на консоль каждый раз, когда в приложении выполняется SQL. Но я должен запустить код в двух отдельных сессиях SSH. Тем не менее, я хочу иметь возможность подключить оба файла в одном сеансе SSH. Это возможно?
Да, tail выводит строки, добавленные ко всем файлам, указанным в командной строке:
tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'
Взгляните на MultiTail. Это - Ваш друг.
У Вас может быть несколько хвостов журнала в
- different windows, a al vim's 'split' - or have it merge the two (or N) streams into one view and - you can filter steams by regex and, if you like, - it will 'tee' the output to a file
http://www.vanheusden.com/multitail/
На Ubuntu 10.04: sudo apt-get install multitail
Можно использовать mkfifo для мультиплексирования вывода к одному каналу
создайте канал FIFO, хвост n файлы к каналу, затем кошка канал
mkfifo pipeName
tail file1 &
tail file2 &
...
tail fileN &
cat pipeName
по окончании
rm pipeName
Да, использование screen
команда, у Вас может быть 2 сессии удара, работающие на одном терминале.
screen
начать, Ctrl-a
затем S
(ПРИМЕЧАНИЕ: капитал S) для разделения экрана на 2. Ctrl-a
затем Tab
переместит Вас между этими двумя сессиями. Ctrl-a
затем c
запустит оболочку в том новом регионе.(Посмотрите, что ответ Riccardo перед использованием этого, его намного более прост, я оставлю на виду это, поскольку это может быть полезно для людей с подобными но различными проблемами).