
A menudo lo usaré tmux
para iniciar una tarea que estará ejecutándose por un tiempo. Volveré periódicamente y lo comprobaré tmux -a
y 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 tail
en 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-pane
que 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 -S
y -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 -10
obtienes 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 -p
opció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, ssh
ya 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-windows
para 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)