GNU Screen e Tmux: consigli e suggerimenti


8

Quindi sono un grande fan dei multiplexer come GNU Screen e Tmux , ma anche usando Screen da anni ormai riconosco ancora che ci sono molte cose lì che non conosco (e uso Tmux solo per un paio di mesi, quindi è peggio ).

Quali sono le configurazioni, i suggerimenti e i trucchi che usi su quei software (entrambi o su ognuno di essi, non importa)?

Lo uso come configurazione dello schermo (penso di averlo adattato dal valore predefinito di Ubuntu screenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

È una semplice configurazione per mostrare la barra di stato con alcuni colori, ma sono sicuro che ci sono più cose che posso fare con lo schermo e Tmux e mi piacerebbe conoscerlo.


zombie qrmantiene aperta la finestra anche se il processo è morto e consente qdi chiuderlo o rresuscitare. Utile per la verifica del software.
Ency,

Risposte:


4

Questo potrebbe essere un po 'semplice per questa folla, ma ho trovato utile aggiungerlo alla fine di .profile, in modo che quando accedo da remoto tramite ssh, riesco a leggere il MOTD, quindi passare allo schermo.

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi

3

Ho questo nel mio .bashrc. Se non stai eseguendo lo schermo, questa funzione chiama sshcome al solito quando eseguita. Se stai eseguendo all'interno dello schermo (e non hai modificato l'impostazione predefinita $TERM), imposta prima il nome della finestra sull'host remoto (insieme a tutti i parametri opzionali). È molto utile tenere traccia delle connessioni remote quando ne hai molte aperte, il che è frequente nella nostra linea di lavoro credo.

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

Uso anche bind ^A windowlist -bper un facile accesso all'elenco delle finestre (basta toccare due volte ctrl-A).

Semplice supporto ssh-agent per tutte le finestre:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

Quindi in qualsiasi finestra fai ssh-aggiungi solo una volta quando inizi una nuova sessione.

Infine, quando ci si collega a una sessione dello schermo remoto da un'altra sessione dello schermo, è possibile utilizzare screen -x -e ^Vvper impostare la sequenza di controllo su CTRL-V (ad esempio). Ciò evita di dover concatenare CTRL-As per controllare la sessione remota.


0

Puoi considerare byobu , che è essenzialmente una raccolta di centinaia di suggerimenti, trucchi, configurazioni, combinazioni di tasti, script di stato e migliori pratiche orientati intorno screene tmux.


0

Anche se ho iniziato a usare tmux per i riquadri, utilizzo comunque lo schermo per multiplexare le finestre all'interno. tmux presumibilmente ha questa funzionalità, ma scambiare i riquadri da una finestra all'altra non è intuitivo per me, né due visualizzatori di tmux collegati possono visualizzare finestre diverse all'interno dello stesso demone (comportamento screen -x), quindi la soluzione screen-in-tmux. Questi sono due vincoli tmux.conf che mi hanno impiegato più tempo per capire e che uso tutti i giorni.

Il primo, lega M (ctrl-b maiusc-M), attiva / disattiva il tmux tra il riquadro di selezione del mouse e l'evidenziazione / copia del mouse. Puoi ancora copiare / incollare in modalità riquadro, ma devi tenere premuto shift (e se ne hai l'abitudine, copiare / incollare in qualsiasi altra applicazione ti renderà un po 'infelice, lascia che te lo dica). La macro rende anche visivamente ovvio quale modalità è attualmente selezionata.

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

Il secondo, associa CL (ctrl-b ctrl-l), prenderà qualsiasi layout di 4 riquadri e lo trasformerà nel mio layout preferito. Spesso, scoprirò di aver premuto ctrl-d in un riquadro che pensavo fosse all'interno dello schermo per chiuderlo, ma invece non c'era alcuna sessione dello schermo e chiuse il riquadro. Dato che il mio layout è suddiviso in v, suddivisione in h, suddivisione in v e alcuni ridimensionamenti, se ho accidentalmente chiuso una finestra tranne l'ultima, diventa un dolore (nessun gioco di parole inteso) chiudere eventuali riquadri intermedi tra quello che devo ricreare e l'ultimo, quindi ricreare e ridimensionare i riquadri e infine ricollegare tutte le sessioni dello schermo che potrei aver dovuto staccare quando ho ucciso i riquadri. Con questa macro, posso creare un nuovo riquadro, ctrl-b {(il bind predefinito per il riquadro di scambio -U) fino a quando non torna nell'ordine giusto, quindi premo la macro e tutto torna alla normalità. Il mio layout preferito non è probabilmente uguale al tuo,list-windows comando per ottenere una stringa di layout come quella qui sotto.

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

Se è troppo ingenuo per i tuoi gusti, c'è sempre tmuxinator per la gestione dei pannelli.

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.