나는 주어진 환경에서 변경 사항을 적용할 때 세션의 출력을 파일에 기록하기 위해 screen의 "log" 명령을 많이 사용합니다. tmux에 대한 매뉴얼 페이지를 검색했지만 해당 항목을 찾을 수 없습니다. tmux에 비슷한 기능이 있는지 아는 사람이 있나요? 아니면 이 작업을 수행하려면 자체 래퍼 스크립트를 작성해야 하나요?
편집: "스크립트"와 기타 유틸리티를 사용하면 세션을 녹음할 수 있다는 것을 알고 있습니다. 스크린의 기능을 매우 유용하게 만드는 것은 문자열 이스케이프를 사용하여 각 세션을 고유하게 식별하는 로그 파일 변수를 정의하는 기능입니다.
예를 들어, 호스트 이름이 주어지면 새 화면 창에서 해당 호스트에 SSH를 수행하고 창 제목을 호스트 이름으로 설정하는 셸 기능이 있습니다. 해당 세션에 대한 로그를 시작하면 창 제목이 앞에 붙습니다.
이 기능이 tmux에 없으면 기록하려는 세션을 "스크립트"하기 위해 새로운 셸 함수 세트를 만들어야 합니다. 별로 어렵지는 않지만 화면이 이미 내 요구 사항에 완벽하게 적합하다는 점을 고려하면 노력할 가치가 없을 것입니다.
답변1
내가 당신의 말을 해독하는지 보자화면올바른 구성:
- 나중에 시작될 로그 파일의 이름을 구성하기 위해 이와 같은 것을
logfile "%t-screen.log"
(아마도 파일에서 ) 사용할 수 있습니다 ..screenrc
- 당신은
title <hostname>
(Ca A)를 사용합니다화면명령은 새 창의 제목을 설정하거나 새 화면 세션을
시작합니다 .screen -t <hostname> ssh0 <hostname>
- Ca H(Ca :log)를 사용합니다.화면명령은 로깅을 구성된 파일로 전환합니다.
그렇다면 거의 동일합니다(요구됨).멀티플렉서1.3+ pipe-pane
에서는 쉘 명령에서 #W를 pipe-pane
사용할 수 있습니다 .멀티플렉서1.0+):
구성 파일(예
.tmux.conf
: )에서:bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'"
- (Cb,)를 사용하여
tmux rename-window <hostname>
기존 창의 이름을 바꾸거나 다음을
사용하여tmux new-window -n <hostname> 'ssh <hostname>'
새 창을 시작합니다.멀티플렉서창 또는 새
시작tmux new-session -n <hostname> 'ssh <hostname>'
멀티플렉서회의. - Cb H를 사용하여 로깅을 전환합니다.
로그가 전환되었다는 알림은 없지만 필요한 경우 알림을 추가할 수 있습니다.
bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log'
.tmux.conf
참고: 위 줄은 구성 파일(또는 사용자 자신의 ) 에 있는 것처럼 나타납니다 source
.멀티플렉서백슬래시와 세미콜론을 모두 확인해야 합니다. 셸에서 구성하려면(예 tmux bind-key …
: ) 이 두 문자를 적절하게 이스케이프하거나 따옴표로 묶어야 합니다.멀티플렉서손대지 않은. 단일 바인딩을 사용하는 경우 켜기/끄기 전환에 대한 다양한 메시지를 표시하는 편리한 방법은 없는 것 같습니다(아마도 이를 사용하여 뭔가를 조작할 수는 있지만 if-shell
아마도 보기 흉할 것입니다). 두 바인딩이 모두 허용되는 경우 다음을 시도해 보세요.
bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log'
bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log'
답변2
다음은 키 바인딩을 방해하지 않고 로깅을 허용하는 tmux 플러그인입니다 .tmux.conf
.
https://github.com/tmux-plugins/tmux-logging
특징:
prefix + P
창 로깅을 전환합니다. 불필요한 ANSI 문자가 출력에서 제거되었습니다!prefix + Alt + P
전체 창 기록을 파일에 저장
답변3
tmux에 대한 문서를 살펴본 후 화면 창 로깅에 해당하는 항목을 찾을 수 없습니다. 원하는 작업을 수행하려면 쉘 기능을 사용해야 하거나 화면만 사용해야 하는 것 같습니다. 디버깅을 켜면 서버 측과 클라이언트 측이 기록되지만 관련되지 않은 tmux 관련 로그도 많이 포함되어 있으므로 정확히 원하는 것은 아닙니다.
tmux의 클립보드를 사용하여 버퍼를 다른 세션에 자동으로 저장할 수 있습니다. 이 세션은 클립보드의 내용을 수락하고 파일에 저장하도록 설정됩니다. 이것은 약간 해킹 된 것처럼 보입니다.
답변4
당신은 그것을 사용할 수 있습니다pipe-pane
주문하다접두사 뒤에 tmux
(기본 접두사, 이는 CTRL+ b:pipe-pane
)입니다.
실시예 1
발견된 사례여기대상 파일을 덮어씁니다(이 경우 myfile
):
pipe-pane "cat >myfile"
실시예 2
tmux
매뉴얼의 예로깅을 전환하고 덮어쓰는 대신 지정된 파일에 추가하기 위해 키 조합을 바인딩합니다.
이
-o
옵션은 이전 파이프가 없는 경우에만 새 파이프를 엽니다. 예를 들어 단일 키로 파이프를 전환할 수 있습니다.bind-key C-p pipe-pane -o 'cat >>~/output.#I-#P'