Articles

Come Utilizzare tmux su Linux (e Perché È Meglio Di Schermo)

  • Dave McKay

    @TheGurkha

  • 14 Maggio 2020, 8:00 EDT
fatmawati achmad zaenuri/

Linux tmux comando è un terminal multiplexer, come screen. I suoi sostenitori sono molti e vocali, quindi abbiamo deciso di confrontare i due. tmux è davvero migliore ,o è solo un caso di preferire ciò che sai?

tmux vs. screen

Entrambi i comanditmux e GNUscreen sono multiplexer di terminale. Essi consentono di avere più finestre all’interno di una singola finestra di terminale, e di saltare avanti e indietro tra di loro. Una finestra può essere divisa in riquadri, ognuno dei quali fornisce una riga di comando indipendente.

Puoi anche staccare una sessione e diventa un’entità senza testa in esecuzione in background—puoi persino chiudere la finestra del terminale che l’ha lanciata. Quando sei pronto, puoi aprire una nuova finestra del terminale e ricollegare la sessione ancora in esecuzione. È anche possibile farlo tramite una connessione SSH.

Pubblicità

È possibile staccare una sessione su un computer, tornare a casa e accedere al computer remoto. Una volta ricollegato, è possibile ricollegare la sessione in background e utilizzarla nuovamente in modo interattivo.

Qual è il comando screen?

Ilscreen comando è anche un multiplexer terminale, ed è ricco di opzioni. Per la verità su tutto ciò che si può fare con esso, controllare il nostro articolo approfondito.

Questa volta, ci concentreremo sutmux. Mentre andiamo avanti, menzioneremo comescreen gestisce la stessa funzione o funzione.

Pubblicità

Solo una cosa ci ha infastidito suscreen. Lo copriremo quando ci arriveremo, e vedremo se tmux le tariffe sono migliori.

COLLEGATE: Come Utilizzare Linux il Comando a schermo

Installazione di tmux

Mentre screen è generalmente installato di default su distribuzioni Linux, tmux non è. Per installare tmux su Ubuntu, digitare il seguente:

sudo apt-get install tmux

Su Manjaro è possibile utilizzare pacman:

sudo pacman -Sy tmux

Su Fedora 31, tmux è già installato.

Avvio di una sessione tmux

Per avviaretmux, basta digitarlo e premere Invio:

tmux

La finestra del terminale mostrerà una barra di stato quando ci si trova in una sessionetmux.

Il lato destro della barra di stato mostra il nome host e l’ora e la data. Il lato sinistro mostra le seguenti informazioni relative alla sessione:

  • : Questo è il nome della sessione. Per impostazione predefinita, sono numerati, a partire da zero. Copriamo come si può dare nomi significativi alle sessioni di seguito.
  • 0: bash*: Lo 0 indica che questa è la prima finestra di questa sessione. L’unico processo in esecuzione in questa sessione è bash. Se si esegue un programma, il suo nome apparirà qui. L’asterisco ( * ) significa che questa è la finestra che stai guardando. Ogni volta che si crea una nuova finestra in una sessione tmux, il suo numero di finestra e il nome del programma in esecuzione vengono aggiunti alla barra di stato.

Il comando screen non fornisce una barra di stato. Devi volare cieco e fare affidamento sul tuo ingegno per sapere cosa sta succedendo, il che richiede un po ‘ di pratica.

Pubblicità

Sul lato positivo, non si perde una linea di finestra terminale immobiliare. Naturalmente, normalmente espanderesti la finestra del terminale per rendere utile l’utilizzo di un multiplexer terminale. In tal caso, la perdita di una riga per la barra di stato non è molto di un problema. Abbiamo lasciato le immagini delle finestre del terminale qui alla dimensione predefinita in modo da poter vedere le informazioni.

I comandi sono dati a tmux usando le sequenze di tasti, e ci sono due parti in questo. Per prima cosa, premi Ctrl+B per ottenere l’attenzione di tmux. Quindi premere rapidamente il tasto successivo per inviare un comando a tmux. I comandi vengono dati premendo lettere, numeri, segni di punteggiatura o tasti freccia.

È lo stesso in screen, tranne che premi Ctrl+A per attirare la sua attenzione.

Per chiudere la finestra, premere Ctrl+B, quindi premere rapidamente X. La barra di stato diventa ambra. Viene quindi richiesto di confermare che si desidera uccidere la finestra.

Pubblicità

Premere Y per chiudere la finestra o N se si cambia idea. Non devi premere Invio in seguito; Y o N è sufficiente per registrare la tua scelta.

Se si preme Y, la finestra si chiude. Poiché questa è l’unica finestra di questa sessione, la sessione viene terminata.

La sessione tmux viene chiusa e si ritorna alla riga di comando da cui si è avviato tmux. Vedrai “” nella finestra del terminale.

Questo potrebbe sembrare ovvio, ma è una conferma che hai chiuso la sessione e non l’hai lasciata staccata e in esecuzione. Discuteremo le sessioni di distacco di seguito.

Avvio di una sessione tmux denominata

Se avvii regolarmente più sessionitmux, apprezzerai rapidamente la funzionalità di dare a ciascuna di esse un nome significativo. Puoi nominare anche le sessioni in screen, ma non vengono visualizzate da nessuna parte nelle finestre della sessione.

Advertisement

Per avviaretmuxcon un nome di sessione, utilizzare il comandonew(nuova sessione) e l’opzione-s (nome sessione). La nostra sessione si chiamerà “geek-1”, quindi digitiamo quanto segue:

tmux new -s geek-1

Quando viene caricata la sessionetmux, “geek-1” viene visualizzato come prima voce nella barra di stato, all’estrema sinistra.

Aggiunta di altre finestre

Per creare una nuova finestra nella sessione corrente, premere Ctrl+B, quindi C. Si otterrà una finestra di terminale vuota nella sessione corrente. Così avremo qualcosa di esecuzione in questa nuova finestra, iniziamo il dmesg il comando -w (follow) opzione:

dmesg -w
Pubblicità

Ora abbiamo due finestre di una sessione; uno è in esecuzione top e l’altro dmesg. Possiamo vedere solo uno alla volta, però (più su che in un momento).

Dai un’occhiata al lato sinistro della barra di stato. Siamo ancora nella sessione” geek-1″tmux. Nella finestra zero, top è in esecuzione e nella finestra uno,dmesg è in esecuzione. L’asterisco ( * ) dopo dmesg ci dice quale finestra è visibile.

Per passare da una finestra all’altra, premere Ctrl+B, quindi uno dei seguenti tasti:

  • N: Visualizza la finestra successiva.
  • P: Visualizza la finestra precedente.
  • da 0 a 9: visualizza una finestra numerata da 0 a 9.

È anche possibile scegliere una finestra da un elenco. Se si preme Ctrl + B e poi W, viene visualizzato un elenco di finestre.

Pubblicità

Per spostare la barra di evidenziazione ambra, premere le frecce Su o Giù, Home o Fine. La sezione inferiore del display mostra un’anteprima del contenuto nella finestra evidenziata.

Premere Invio per passare alla finestra evidenziata o Esc per uscire dall’elenco delle finestre senza cambiare.

Disconnessione e collegamento delle sessioni

Se si preme Ctrl+B e poi D, si scollega la sessione. Continuerà a funzionare in background, ma non sarà in grado di vedere o interagire con esso.

Abbiamo iniziato top nella sessione in modo da avere un processo in esecuzione con cui dimostrare. Quindi, premiamo Ctrl + B, quindi D. La sessione scompare e diventa una sessione in background.

Pubblicità

Torniamo alla finestra del terminale originale. C’è un messaggio da tmux che ci dice che la sessione è staccata. Ci ricorda anche il nome che abbiamo dato alla sessione. Questo è utile perché è quello che usiamo per collegare a una sessione in background, e quindi ripristinarlo a uno interattivo.

Per allegare una sessione distaccata, useremo il comando autoesplicativo attach-sessioncon l’opzione -t (sessione di destinazione). Forniremo anche il nome della sessione che vogliamo richiamare.

Digitiamo quanto segue:

tmux attach-session -t geek-1

La nostra sessione ritorna e diventa di nuovo una sessione visibile e interattiva.

Qualsiasi processo di lunga durata o continuo avviato prima di scollegare la sessione verrà comunque eseguito in background (a meno che non sia terminato) quando si collega la sessione.

screen può farlo, ma non in modo intuitivo.

la Gestione di Più Sessioni

aprire un’altra finestra di terminale, e l’avvio di una nuova tmux sessione di geek-2″:

tmux new -s geek-2

In quella sessione, inizieremo dmesg:

dmesg -w
Pubblicità

Ora, abbiamo la nostra originale “geek-1” tmux sessione, e una nuova chiamata “geek-2.”

La barra di stato ci mostra questa sessione si chiama “geek-2”, e ha una finestra che esegue dmesg.

Se premiamo Ctrl + B, e poi D, stacchiamo quella sessione.

Pubblicità

Di nuovo nella sessione” geek-1″tmux, premiamo Ctrl+B, e poi S per vedere un elenco di tmux sessioni.

Per essere chiari, questo è un elenco di sessioni. Il display simile che abbiamo visto in precedenza era un elenco di finestre in una singola sessione.

È possibile spostare la barra di evidenziazione ambra premendo le frecce Su e Giù, Home e End. La sezione inferiore visualizza un’anteprima del contenuto nella sessione evidenziata.

Se si preme la freccia destra, vengono visualizzate le finestre per la sessione evidenziata.

Pubblicità

Premere Invio per passare alla sessione o finestra evidenziata o Esc per uscire dall’elenco delle sessioni senza modificare le sessioni. Se si seleziona una nuova sessione, quella corrente si stacca e quella selezionata viene allegata.

Abbiamo staccato la sessione “geek-2” prima di farlo. Tuttavia, è possibile farlo con sessioni che sono ancora collegate alle finestre del terminale originale. Quando lo fai, tutte le modifiche allo schermo appariranno simultaneamente in entrambe le sessionitmux.

Il screen comando può fare anche questo, tramite un insieme simile di comandi.

Lavorare con i riquadri delle finestre

Se si preme Ctrl+B, quindi si raddoppiano le virgolette (“”), si divide la finestra orizzontalmente in due riquadri.

Pubblicità

Questo riguarda solo la finestra corrente; gli altri nella sessione non verranno modificati. Abbiamo usato il comandotmux ls nel riquadro in alto per elencare le finestre in questa sessione. Ce ne sono due, e la riga di stato ci dice che siamo nella finestra uno. Se saltiamo verso la finestra zero premendo Ctrl+B, e poi 0 (zero), vediamo che è proprio come l’abbiamo lasciato.

Queste sono due linee di comando indipendenti, non due viste in una finestra; sono shell distinte e separate. Possiamo mostrarlo eseguendo un comando diverso in ogni riquadro.

Digitiamo quanto segue:

uname -a

ls -hl

Per passare da un riquadro all’altro, premere Ctrl+B, quindi la freccia Su, Giù, Sinistra o Destra.

Se si preme Ctrl+B e quindi il segno percentuale (%) divide verticalmente il riquadro corrente.

Pubblicità

Premere Ctrl+B, e poi Q per fare tmux flash brevemente il numero di ogni riquadro.

Questi numeri vengono utilizzati nei prompt e nei messaggi da tmux. Premere Ctrl + B, quindi X per chiudere il riquadro corrente. La barra di stato cambia in ambra e viene richiesto di confermare di voler chiudere il numero del riquadro. Premere Y per rimuovere il riquadro o N per lasciare le cose come sono.

Se si preme Y, il riquadro viene rimosso.

Il comando screen ha anche riquadri, ma, ancora una volta, sono meno intuitivi da usare. La cosa che ci infastidisce di screen è se si stacca una sessione con riquadri, scompaiono quando si riattacca quella sessione. Questo invecchia molto rapidamente.

Un Cheat Sheet Ctrl+B

Abbiamo incluso un cheat sheet dei diversi comandi che puoi usare intmux di seguito.

Comandi di sessione

  • S: Elenca le sessioni.
  • $: Rinomina la sessione corrente.
  • D: Staccare la sessione corrente.
  • Ctrl + B, e poi ?: Visualizza la pagina di aiuto in tmux.

Comandi finestra

  • C: Crea una nuova finestra.
  • ,: Rinomina la finestra corrente.
  • W: Elenca le finestre.
  • N: Passare alla finestra successiva.
  • P: Passare alla finestra precedente.
  • da 0 a 9: passare al numero della finestra specificato.

Comandi riquadro

  • %: crea una divisione orizzontale.
  • “: Crea una divisione verticale.
  • H o Freccia sinistra: passare al riquadro a sinistra.
  • I o Freccia destra: Passare al riquadro a destra.
  • J o Freccia giù: passare al riquadro sottostante.
  • K o Freccia su: passare al riquadro sopra.
  • D: Mostra brevemente i numeri del riquadro.
  • O: Passare attraverso i riquadri in ordine. Ogni stampa ti porta alla successiva, fino a quando non li attraversi tutti.
  • }: Scambia la posizione del riquadro corrente con quella successiva.
  • {: Scambia la posizione del riquadro corrente con quella precedente.
  • X: Chiudere il riquadro corrente.

Come confrontano

In termini di funzionalità,screen etmux hanno entrambi prestazioni simili e offrono le stesse caratteristiche principali. È il modo in cui accedi a quelle funzionalità che è marcatamente diverso. tmux offre slicker, modi più comodi per arrivare alle varie funzioni. Tuttavia, questa non è l’unica differenza.

Pubblicità

La possibilità di rinominare sessioni e finestre in tmux è pulito, e il fatto che mantiene i riquadri quando si riattacca una sessione è un punto di svolta.

screen, d’altra parte, perde completamente i riquadri quando si stacca e si riattacca una sessione. Questo è quasi abbastanza fastidioso da farti evitare di staccare in primo luogo.

C’è molto di più intmux, incluse le sue capacità di scripting incredibilmente flessibili. Lo devi a te stesso per controllare.

Dave McKay
Dave McKay ha usato per la prima volta i computer quando il nastro di carta punzonato era in voga, e da allora ha programmato. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera, ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come responsabile della protezione dei dati. Dave è un evangelista di Linux e fautore dell’open source.Leggi la Biografia completa ”