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

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

A menudo lo usaré tmuxpara iniciar una tarea que estará ejecutándose por un tiempo. Volveré periódicamente y lo comprobaré tmux -ay luego me desconectaré si aún no se ha completado y volveré a comprobarlo más tarde.

¿Hay alguna forma de ver una breve instantánea de lo que sucede en la sesión sin adjuntarla por completo? Estoy buscando algo como, en teoría, hacer una sesión tailen la sesión para obtener el último resultado (pero si puedo evitar crear otro archivo con una copia del resultado, mucho mejor).

Tal vez también funcione conectarlo y desconectarlo inmediatamente. Estoy intentando guardar las pulsaciones de teclas, ¿tal vez dicho comando podría ejecutarse de forma remota,
es decir ssh root@server tmux --tail?

Respuesta1

Creo capture-paneque podría satisfacer sus necesidades:

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

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

De forma predeterminada, 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. Entonces, al agregar, -S -10obtienes las diez líneas más recientes del historial más el contenido actual 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 coma si está emitiendo este comando a través de, sshya que el shell remoto agregará un nivel adicional de interpretación del shell (los puntos y coma deben pasarse como argumentos al finaltmuxcomando, no deben ser interpretados ni por el shell local ni por el remoto).

Respuesta2

No precisamente. Un enfoque que me viene a la mente es iniciar el proceso de ejecución prolongada ( $lrp) y luego, periódicamente, sin volver a conectarlo, ejecutarlo list-windowspara la sesión correspondiente.

En algún momento, el nombre de la ventana tmux con $lrp volverá al nombre 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)

información relacionada