¿Puedo ver lo que sucede en una sesión de tmux sin adjuntarme?

16

A menudo lo usaré tmuxpara comenzar una tarea que se ejecutará por un tiempo. Periódicamente volveré y lo comprobaré usando tmux -ay luego desconectaré si aún no se ha completado y volveré a verificar más tarde.

¿Hay alguna forma de ver una breve instantánea de lo que está sucediendo en la sesión sin adjuntarlo por completo? Estoy buscando algo como teóricamente hacer un tailen la sesión para obtener el último bit de salida (pero si puedo evitar crear otro archivo con una copia de la salida, mejor)

Quizás unirlo y quitarlo inmediatamente también funcionaría. Estoy intentando guardar las pulsaciones del teclado, ¿tal comando podría ejecutarse de forma remota,
es decir ssh root@server tmux --tail?

cwd
fuente

Respuestas:

17

Creo que capture-panepodría satisfacer sus necesidades:

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

(consulte "panel de destino" en la página del manual para conocer las formas de especificar un panel)

Por defecto, ese comando volcará el contenido actual del panel especificado. Puede especificar un rango de líneas usando las opciones -Sy -E(números de línea inicial y final): la primera línea es 0, y los números negativos se refieren a líneas del historial de "desplazamiento hacia atrás" del panel. Por lo tanto, agregar -S -10le proporciona las diez líneas más recientes de la historia más los contenidos actuales del panel.

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

La -popción se agregó en 1.8. Si está ejecutando una versión anterior, puede hacer esto en su lugar:

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

Pero tenga en cuenta esos puntos y comas si está emitiendo este comando a través de, sshya que el shell remoto agregará un nivel adicional de interpretación de shell (los puntos y comas deben pasarse como argumentos al comando tmux final , no deben ser interpretados por el local o el remoto cáscara).

Chris Johnsen
fuente
1
Realmente tienes esta etiqueta ... Gran respuesta (como siempre).
jasonwryan
También se puede agregar -epara escapes ANSI (color, etc.). Eso lo convierte en una agradable mnemónica-pet
ovejas voladoras
1

Realmente no. Un enfoque que viene a la mente es comenzar su proceso de ejecución prolongada ( $lrp) y luego, periódicamente, sin volver a adjuntar, ejecutar list-windowsla sesión correspondiente.

En algún momento, el nombre de la ventana tmux con $ lrp volverá a ser el predeterminado, generalmente su shell, y podrá ver que $ lrp se ha completado.

┌─[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)
jasonwryan
fuente
buena idea. Aunque todavía estoy confundido $lrp, ¿fue esa una variable que mencionaste? ¿Puedes dar un ejemplo de cómo se usaría? no $lrpaparece en la listaman tmux
cwd
@cwd Eso es solo un marcador de posición para su proceso (digamos rsynco lo que sea) ... :)
jasonwryan