Posso ver o que está acontecendo em uma sessão do tmux sem anexá-lo?

10

Geralmente, uso tmux para iniciar uma tarefa que será executada por um tempo. Vou periodicamente voltar e verificar usando tmux -a e, em seguida, desconectar se ainda não tiver concluído e verifique novamente mais tarde.

Existe alguma maneira de ver apenas um breve resumo do que está acontecendo na sessão sem anexar completamente? Eu estou procurando por algo como teoricamente fazendo um tail na sessão para obter o último bit de saída (mas se eu puder evitar criar outro arquivo com uma cópia da saída tanto melhor)

Talvez anexar e tê-lo imediatamente desligado também funcione. Estou tentando salvar pressionamentos de teclas, talvez esse comando possa ser executado remotamente,
ou seja, ssh root@server tmux --tail ?

    
por cwd 17.11.2014 / 02:34

2 respostas

11

Acho que capture-pane pode atender às suas necessidades:

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

(consulte “painel de destino” na página man para saber como especificar um painel)

Por padrão, esse comando 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 "rolar para trás" do painel. Portanto, a adição de -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 opção -p foi adicionada em 1.8. Se você estiver executando uma versão anterior, poderá fazer isso:

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

Mas lembre-se desses pontos-e-vírgulas se estiver emitindo este comando via ssh , já que o shell remoto adicionará um nível adicional de interpretação do shell (os ponto-e-vírgulas precisam ser passados como argumentos para o comando final tmux , eles não devem ser interpretados pelo shell local ou remoto).

    
por 17.11.2014 / 07:59
1

Não realmente. Uma abordagem que vem à mente é iniciar seu processo de longa execução ( $lrp ) e depois, periodicamente, sem voltar a anexar, executando list-windows para a sessão relevante.

Em algum ponto, o nome da janela do tmux com $ lrp mudará de volta para o 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)
    
por 17.11.2014 / 03:41

Tags