Mam aplikację internetową, która generuje dane wyjściowe do wielu plików dziennika z informacjami o wydajności. Jeden plik dziennika generuje czasy wykonania kodu, a drugi generuje czasy SQL. Nie mam kontroli nad programem rejestrującym ani kodem, który generuje pliki dziennika, ale chcę wyprowadzać dzienniki w jednym miejscu.
Obecnie robię coś takiego
tail -f sqlLogs.log | grep sql-time
tail -f perflogs.log | grep exec-time
To wysyła coś do konsoli za każdym razem, gdy SQL jest wykonywany w aplikacji. Ale muszę uruchomić kod w dwóch oddzielnych sesjach SSH. Jednak to, co chcę być w stanie dopasować oba pliki, w tej samej sesji SSH. czy to możliwe?
Spójrz na MultiTail . To twój przyjaciel.
Możesz mieć wiele ogonów dziennika
http://www.vanheusden.com/multitail/
W systemie Ubuntu 10.04:
sudo apt-get install multitail
źródło
Tak, używając
screen
polecenia, możesz mieć 2 sesje bash uruchomione na jednym terminalu.screen
aby zacząćCtrl-a
następnieS
(UWAGA: kapitał S), aby podzielić ekran na 2.Ctrl-a
następnieTab
przeniesie Cię między dwiema sesjami.Ctrl-a
następniec
uruchomi powłokę w tym nowym regionie.(Proszę zapoznać się z odpowiedzią Riccardo przed użyciem, jego jest znacznie prostsze, pozostawię to, ponieważ może być przydatne dla osób z podobnymi, ale różnymi problemami).
źródło
Możesz użyć mkfifo, aby zwielokrotnić wyjście do jednej potoku
utwórz fajkę fifo, dołącz do niej pliki n, a następnie nadaj jej kształt
gdy zakończono
źródło
tail fileN >> pipeName
.