
Freqüentemente, usarei tmux
para iniciar uma tarefa que estará em execução por um tempo. Periodicamente, voltarei e verificarei usando tmux -a
e, 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 tail
na 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-pane
que 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 -S
e -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 -10
fornece 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 -p
opçã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 ssh
já 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-windows
a 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)