Linux에서 tmux 세션의 전체 콘솔 로그를 얻는 방법은 무엇입니까?

Linux에서 tmux 세션의 전체 콘솔 로그를 얻는 방법은 무엇입니까?

.py 파일을 실행하는 tmux 세션이 있는 Google Cloud에 Linux VM이 있고 콘솔 로그를 가져오려고 하는데 위로 스크롤하거나 아무것도 할 수 없습니다.

어떤 아이디어가 있나요?

이게 내 콘솔이야

답변1

스크롤하는 방법에 대해서는 언급하지 않았습니다. 터미널 창 자체를 스크롤하려고 하면 Tmux가 전체 화면 응용 프로그램이므로 작동하지 않습니다. 이는 스크롤 vim(또는 다른 편집기)을 시도하는 것과 같습니다.

그러나 몇 가지 옵션이 있습니다.

Tmux 복사 모드

Tmux의 롤백 메커니즘(복사 모드라고 함)을 활성화하기 위한 기본 키 바인딩은 Prefix(보통 Ctrl+ B)이고 그 뒤에 가 옵니다 [. 그런 다음 화살표 키를 통해 스크롤하십시오.

전체 버퍼 저장

(적어도) 두 가지 방법 중 하나로 전체 버퍼를 파일로 검색할 수도 있습니다. 먼저 메시지가 표시되면 다음을 수행할 수 있습니다.

tmux capture-pane -pS - > ~/tmux-buffer.txt

하지만 Python 프로그래밍이 실행 중이라고 언급했으므로 다음을 수행해야 합니다.

  • 다음 명령을 사용하여 Tmux 명령 프롬프트에 액세스하십시오.Prefix:
  • 다음 명령을 사용하여 창을 버퍼에 저장합니다.
    capture-pane -S -
    
  • Tmux 프롬프트에 다시 액세스하십시오( Prefix:).
  • 버퍼를 파일에 저장:
    save-buffer ~/tmux-buffer.txt
    

또 다른 방법은 이전 두 옵션을 결합하고 tmux다음에서 명령을 실행하는 것 입니다 run-shell.

  • 다음 명령을 사용하여 Tmux 명령 프롬프트에 액세스하십시오.Prefix:
  • 다음을 통해 첫 번째 Tmux 명령을 실행하십시오.
    run-shell "tmux capture-pane -pS - > ~/tmux-buffer.txt"
    
버퍼를 다른 호출기로 보내기

명령줄에서:

tmux capture-pane -pS - | less

Tmux 명령 프롬프트에서:

run-shell "tmux capture-pane -pS - | less"

더 좋은 점은 이스케이프 코드를 유지하면서 다른 형식과 색상을 포함할 수 있다는 것입니다.

tmux capture-pane -epS - | less -r

tee마지막으로, 이 상황에서의 유용성을 잊지 마세요. 프로그램의 출력을 캡처하려는 것을 미리 알고 있는 경우 다음 명령을 사용하여 이를 화면과 파일로 보냅니다 tee.

python myprog.py 2>&1 | tee ~/myprog-out.txt

물론 이것은 stdoutand를 캡처합니다.stderr

물론 이전의 모든 Tmux 치료법과 마찬가지로 추가적인 사전 계획은 실제로 필요하지 않습니다.

관련 정보