
tmux
종종 한동안 실행될 작업을 시작하는 데 사용합니다 . 주기적으로 돌아가서 확인하고 tmux -a
, 아직 완료되지 않은 경우 연결을 끊고 나중에 다시 확인하겠습니다.
완전히 연결하지 않고 세션에서 진행되고 있는 간단한 스냅샷을 볼 수 있는 방법이 있습니까? 나는 이론적으로 마지막 출력 비트를 얻기 위해 세션에서 수행하는 것과 같은 것을 찾고 있습니다. tail
(그러나 출력 복사본으로 다른 파일을 생성하지 않을 수 있다면 더 좋습니다)
아마도 부착했다가 즉시 분리하는 것도 효과가 있을 것입니다. 키 입력을 저장하려고 합니다. 아마도 그러한 명령을 원격으로 실행할 수 있을 것입니다.
즉 ssh root@server tmux --tail
, ?
답변1
내 생각에는 capture-pane
귀하의 필요에 적합할 것 같습니다:
tmux capture-pane -pt "$target-pane"
(창을 지정하는 방법은 매뉴얼 페이지의 "target-pane"을 참조하십시오)
기본적으로 해당 명령은 지정된 창의 현재 내용을 덤프합니다. -S
및 옵션(시작 및 끝 줄 번호)을 사용하여 줄 범위를 지정할 수 있습니다 -E
. 첫 번째 줄은 0이고 음수는 창의 "뒤로 스크롤" 기록의 줄을 나타냅니다. 따라서 추가하면 -S -10
가장 최근 10줄의 기록과 창의 현재 내용이 표시됩니다.
tmux capture-pane -pt "$target-pane" -S -10
1.8에서 이 -p
옵션이 추가되었습니다. 이전 버전을 실행 중인 경우 대신 다음을 수행할 수 있습니다.
tmux capture-pane -t "$target_pane" \; save-buffer - \; delete-buffer
그러나 원격 셸이 셸 해석의 추가 수준을 추가하므로 이 명령을 실행하는 경우 세미콜론에 유의하세요 ssh
(세미콜론은 최종 명령에 인수로 전달되어야 함).티먹스명령을 실행하는 경우 로컬 또는 원격 셸에서 해석하면 안 됩니다.
답변2
설마. 떠오르는 한 가지 접근 방식은 장기 실행 프로세스( $lrp
)를 시작한 다음 다시 연결하지 않고 주기적 list-windows
으로 관련 세션을 실행하는 것입니다.
어떤 시점에서 $lrp가 포함된 tmux 창의 이름은 기본값(일반적으로 쉘)으로 다시 변경되며 $lrp가 완료되었음을 확인할 수 있습니다.
┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1 (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: $lrp* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)
┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1 (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: bash* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)