Często używam komendy screen „log” do rejestrowania danych wyjściowych sesji w pliku, gdy dokonuję zmian w danym środowisku. Przeszukałem stronę podręcznika tmux, ale nie mogłem znaleźć odpowiednika. Czy ktoś wie o podobnej funkcji w tmuxie, czy muszę napisać własne skrypty opakowania, aby to zrobić?
EDYCJA: Mam świadomość „skryptu” i innych narzędzi, które pozwalają mi zalogować sesję. Powodem, dla którego funkcjonalność screena jest tak przydatna, jest możliwość zdefiniowania zmiennej pliku dziennika, która używa znaków zmiany znaczenia w celu jednoznacznego zidentyfikowania każdej sesji.
np. Mam funkcję powłoki, która, biorąc pod uwagę nazwę hosta, prześle SSH do tego hosta w nowym oknie ekranowym i ustawi tytuł okna na nazwę hosta. Kiedy uruchamiam dziennik tej sesji, jest on poprzedzony tytułem okna.
Jeśli ta funkcja nie istnieje w tmux, będę musiał utworzyć nowy zestaw funkcji powłoki, aby skonfigurować „skrypty” sesji, które chcę rejestrować. Nie jest to niezwykle trudne, ale może nie być warte wysiłku, biorąc pod uwagę, że ekran robi dokładnie to, czego już potrzebuję.
źródło
tmux pipe-pane …
polecenie do swojegodefault-command
(tj. Przed uruchomieniem powłoki); oczywiście działałoby to tylko w przypadku okien „domyślnych” (nic nie zaczęło się od jawnych poleceń, npnew-window sqlite3
.). Pojawiły się wskazówki, że obsługa „hook” może wylądować w przyszłej wersji tmux ; Może to pozwolić skonfigurować polecenie (nppipe-pane …
) mają być automatycznie uruchamiane po innej komendynew-session
,new-window
lubsplit-pane
).read
idate
to zaaranżować. Egbind-key H pipe-pane -o 'exec bash -c "while IFS= read -r line; do echo \"\$(date +%%Y%%m%%dT%%H%%M%%SZ%%z): \$line\"; done" >>$HOME/"#W-tmux.log"'
date
dla każdego wiersza wyników będzie poważnym spadkiem wydajności! Znacznie lepiejprintf '%(%Y%m%dT%H%M%S)T: %s\n' "$line"
(uciekaj, jeśli jest to konieczne do włączenia do pliku konfiguracyjnego tmux, prawdopodobnie podwajając%s
i uciekając"
).Oto wtyczka tmux, która umożliwia logowanie bez bałaganu przy pomocy klawiszy
.tmux.conf
:https://github.com/tmux-plugins/tmux-logging
Cechy:
prefix + P
przełącza rejestrowanie okienka. Wyjście jest usuwane z niechcianych znaków ANSI!prefix + Alt + P
zapisuje pełną historię panelu do plikuźródło
Po przejrzeniu dokumentacji tmux nie mogę znaleźć żadnego odpowiednika rejestrowania okien na ekranie. Wygląda na to, że będziesz musiał użyć funkcji powłoki, aby zrobić to, co chcesz, lub po prostu użyć ekranu. Możesz włączyć debugowanie, które rejestruje zarówno serwer, jak i stronę klienta, ale zawiera również wiele zewnętrznych dzienników związanych z tmux, więc nie byłoby to dokładnie to, o co prosiłeś.
Możesz użyć schowka tmux do zautomatyzowania zapisywania bufora do innej sesji, która zostałaby skonfigurowana do akceptowania zawartości schowka i zapisywania do pliku. To wydaje się trochę hackerskie.
źródło
robię to za pomocą skryptu, to z mojego pliku tmux.conf
źródło
log
, które pozwala na logowanie w locie. Ale jeśli jesteś w tmuxie i chcesz użyć rejestrowania ekranu, musisz mimo wszystko uruchomić nową powłokę.