Posso vedere cosa sta succedendo in una sessione di tmux senza collegarmi ad essa?


16

Spesso userò tmuxper avviare un'attività che sarà in esecuzione per un po '. Ritornerò periodicamente e lo verificherò usando tmux -ae poi mi disconnetterò se non è stato ancora completato e ricontrollerò più tardi.

C'è un modo per vedere solo una breve istantanea di ciò che sta accadendo nella sessione senza collegarsi completamente? Sto cercando qualcosa come teoricamente fare una tailsessione per ottenere l'ultimo bit di output (ma se posso evitare di creare un altro file con una copia dell'output tanto meglio)

Forse attaccare e farlo staccare immediatamente avrebbe funzionato. Sto tentando di salvare le sequenze di tasti, forse un tale comando potrebbe essere eseguito in remoto,
cioè ssh root@server tmux --tail?

Risposte:


17

Penso che capture-panepotrebbe soddisfare le tue esigenze:

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

(vedi "riquadro di destinazione" nella pagina man per i modi in cui specificare un riquadro)

Per impostazione predefinita, quel comando scaricherà il contenuto corrente del riquadro specificato. È possibile specificare un intervallo di righe utilizzando le opzioni -Se -E(numeri di riga iniziale e finale): la prima riga è 0 e i numeri negativi si riferiscono alle righe della cronologia "indietro" del riquadro. Quindi aggiungendo -S -10ottieni le dieci righe più recenti della cronologia più il contenuto corrente del riquadro.

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

L' -popzione è stata aggiunta in 1.8. Se stai eseguendo una versione precedente, puoi invece farlo:

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

Ma attenzione a questi punti e virgola se si sta eseguendo questo comando tramite sshpoiché la shell remota aggiungerà un ulteriore livello di interpretazione della shell (i punti e virgola devono essere passati come argomenti al comando tmux finale , non devono essere interpretati né dal locale né dal telecomando conchiglia).


1
Possiedi davvero questo tag ... Ottima risposta (come al solito).
Jasonwryan,

Si può anche aggiungere -eper le fughe ANSI (colore e così via). Questo rende piacevole un mnemonico-pet
volare pecore il

1

Non proprio. Un approccio che viene in mente è quello di iniziare il processo di lunga durata ( $lrp) e quindi, periodicamente, senza ricollegarsi, in esecuzione list-windowsper la sessione pertinente.

Ad un certo punto, il nome della finestra di tmux con $ lrp tornerà al valore predefinito, generalmente la tua shell, e sarai in grado di vedere che $ lrp è stato completato.

┌─[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)

buona idea. $lrpTuttavia, sono ancora confuso : era una variabile che hai menzionato? puoi fare un esempio di come sarebbe usato? non è stato $lrpelencato inman tmux
cwd il

@cwd Questo è solo un segnaposto per il tuo processo (diciamo rsynco altro) ... :)
jasonwryan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.