Posso ver o que está acontecendo em uma sessão do tmux sem me conectar a ela?

Posso ver o que está acontecendo em uma sessão do tmux sem me conectar a ela?

Freqüentemente, usarei tmuxpara iniciar uma tarefa que estará em execução por um tempo. Periodicamente, voltarei e verificarei usando tmux -ae, em seguida, desconectarei se ainda não tiver sido concluído e verificarei novamente mais tarde.

Existe alguma maneira de ver apenas um breve instantâneo do que está acontecendo na sessão sem anexar totalmente? Estou procurando algo como, teoricamente, fazer um tailna sessão para obter a última parte da saída (mas se eu puder evitar a criação de outro arquivo com uma cópia da saída, melhor ainda)

Talvez anexar e desconectar imediatamente também funcionasse. Estou tentando salvar as teclas digitadas, talvez tal comando possa ser executado remotamente,
ou seja ssh root@server tmux --tail?

Responder1

Acho capture-paneque pode atender às suas necessidades:

tmux capture-pane -pt "$target-pane"

(consulte “target-pane” na página de manual para saber como especificar um painel)

Por padrão, esse comando irá despejar o conteúdo atual do painel especificado. Você pode especificar um intervalo de linhas usando as opções -Se -E(números de linha inicial e final): a primeira linha é 0 e os números negativos referem-se a linhas do histórico de “rolagem para trás” do painel. Portanto, a adição -S -10fornece as dez linhas mais recentes do histórico, além do conteúdo atual do painel.

tmux capture-pane -pt "$target-pane" -S -10

A -popção foi adicionada em 1.8. Se você estiver executando uma versão anterior, poderá fazer o seguinte:

tmux capture-pane -t "$target_pane" \; save-buffer - \; delete-buffer

Mas lembre-se dos pontos e vírgulas se você estiver emitindo este comando sshjá que o shell remoto adicionará um nível adicional de interpretação do shell (os pontos e vírgulas precisam ser passados ​​como argumentos para o finaltmuxcomando, eles não devem ser interpretados pelo shell local ou remoto).

Responder2

Na verdade. Uma abordagem que vem à mente é iniciar seu processo de longa execução ( $lrp) e então, periodicamente, sem reconectar, executar list-windowsa sessão relevante.

Em algum momento, o nome da janela tmux com $lrp voltará ao padrão, geralmente seu shell, e você poderá ver que $lrp foi concluído.

┌─[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)

informação relacionada