tmux: perché conviene usarlo subito su Linux
tmux risolve un problema molto concreto: quando lavori in SSH, fai manutenzione su server remoti o gestisci più task alla volta, una sessione terminale tradizionale non basta. Se la connessione cade, perdi il contesto. Se devi tenere aperti log, editor e comandi di monitoraggio, finisci a moltiplicare finestre e shell senza ordine. tmux mette struttura dove altrimenti c’è caos: sessioni persistenti, finestre, pannelli e riattacco immediato dopo un logout.
La scelta giusta non è “installarlo perché si usa”. La scelta giusta è adottarlo quando vuoi separare il ciclo di vita del terminale dal ciclo di vita della connessione. È utile su macchine di produzione, su jump host, in ambienti di test, durante deploy manuali e in qualunque scenario in cui una shell persa costa tempo o rischi operativi.
Installazione su Debian, Ubuntu, RHEL, Fedora e Arch
tmux è quasi sempre nei repository standard. In pratica, l’installazione è semplice e non richiede pacchetti accessori per l’uso base. Scegli il comando coerente con la tua distribuzione e verifica subito la versione installata, così sai quali funzionalità hai davvero a disposizione.
Debian e Ubuntu:
sudo apt update
sudo apt install tmux tmux -V
RHEL, Rocky Linux, AlmaLinux e Fedora:
sudo dnf install tmux tmux -V
Arch Linux:
sudo pacman -S tmux tmux -V
Se il comando restituisce una versione, l’installazione è andata a buon fine. Se invece il pacchetto non esiste, il problema di solito è un repository disabilitato o un sistema troppo minimale. In quel caso conviene verificare i repository attivi prima di cercare workaround strani.
Su sistemi enterprise o host vecchi, la versione del pacchetto può essere datata. Non è un problema per l’uso comune, ma alcune opzioni recenti potrebbero mancare. La verifica pratica è sempre la stessa: guarda l’output di tmux -V e confrontalo con la documentazione che ti serve davvero, non con una guida generica letta mesi fa.
Avvio rapido: sessioni, finestre e pannelli
Il primo concetto da fissare è questo: una sessione tmux è un contenitore persistente. Dentro la sessione puoi avere una o più finestre; dentro ogni finestra puoi dividere lo schermo in pannelli. È un modello semplice, ma cambia il modo in cui lavori al terminale.
Per creare una sessione nominata:
tmux new -s lavoro
Per staccarti senza chiudere nulla, usa la scorciatoia predefinita Ctrl-b poi d. La sessione continua a vivere sul server. Per rientrare:
tmux attach -t lavoro
Per elencare le sessioni attive:
tmux ls
Le finestre sono utili quando vuoi separare attività logiche: una per i log, una per l’editor, una per i test. I pannelli servono invece quando devi confrontare output in parallelo, ad esempio applicazione e log nello stesso schermo. La regola pratica è semplice: finestre per separare contesti, pannelli per confrontare dati in tempo reale.
Alcuni comandi base da conoscere subito:
Ctrl-b c # nuova finestra
Ctrl-b , # rinomina finestra
Ctrl-b % # dividi verticalmente
Ctrl-b " # dividi orizzontalmente
Ctrl-b o # passa al pannello successivo
Ctrl-b x # chiudi pannello corrente
Se lavori spesso in SSH, questo set minimo basta già per ridurre il numero di terminali aperti e per non perdere il filo quando la sessione remota cade.
Configurazione iniziale: file, prefisso e comportamento predefinito
La configurazione utente di tmux sta in ~/.tmux.conf. Se il file non esiste, puoi crearlo. Qui conviene fare poche modifiche mirate, non trasformarlo in un accumulo di tweak copiati a caso. Il primo obiettivo è rendere tmux più naturale da usare, non più “esotico”.
Un esempio di base sensato:
# ~/.tmux.conf
set -g mouse on
set -g history-limit 50000
set -g base-index 1
setw -g pane-base-index 1
set -g status-keys vi
setw -g mode-keys vi
set -g renumber-windows on
Queste opzioni fanno cose molto pratiche. Il mouse aiuta nel selezionare pannelli e scorrere il buffer. L’aumento della history evita di perdere output importanti nei log. Gli indici da 1 sono più comodi per chi ragiona come gli esseri umani e non come gli array. Le modalità vi rendono la navigazione in copy mode più rapida per chi usa già quell’editing model.
Dopo aver modificato il file, ricarica la configurazione senza chiudere la sessione:
tmux source-file ~/.tmux.conf
Se vuoi verificare che l’opzione sia stata presa, usa il comando di show:
tmux show -g mouse tmux show -g history-limit
Il punto importante è operativo: ogni modifica alla configurazione va trattata come un change piccolo e reversibile. Se qualcosa non ti convince, commenti la riga e ricarichi. Non serve riavviare il sistema e non serve chiudere tutte le sessioni aperte.
Rinominare sessioni e finestre per non perdere il controllo
Quando usi tmux seriamente, i nomi contano. Una sessione chiamata 1 o test diventa rapidamente ambigua. Nominare bene sessioni e finestre ti aiuta a ritrovare il contesto anche dopo ore o giorni.
Per rinominare una sessione dall’interno, puoi usare:
tmux rename-session -t lavoro deploy-app
Per rinominare una finestra corrente, la scorciatoia Ctrl-b , è più rapida. In contesti reali conviene usare nomi descrittivi come logs, db, build, monitoring, ssh-prod. Sono nomi banali, ma riducono gli errori quando apri più sessioni contemporaneamente.
Un dettaglio poco considerato: la chiarezza dei nomi è una forma di controllo operativo. Se un collega deve agganciarsi alla tua sessione durante un incidente, un nome leggibile è già una mezza documentazione.
Usare tmux con SSH: il caso d’uso più utile
tmux dà il meglio quando lavori via SSH. La sequenza classica è: entri sul server, apri tmux, fai il lavoro, ti stacchi, perdi la connessione, rientri e riprendi esattamente da dove avevi lasciato. È un vantaggio enorme durante manutenzioni, deploy e troubleshooting.
Il flusso più pulito è questo:
ssh user@server tmux new -s manutenzione
Se vuoi entrare direttamente in una sessione esistente o crearla al volo, puoi usare un piccolo wrapper shell nel tuo ~/.bashrc o ~/.zshrc. Un esempio semplice e prudente:
alias t='tmux attach || tmux new'
Questo alias è comodo, ma va usato con criterio. In ambienti condivisi o su host con più sessioni importanti, è meglio scegliere il nome esplicitamente. L’alias veloce è utile sul tuo ambiente personale; su sistemi operativi condivisi può nascondere troppo.
Se la tua shell supporta la variabile TMUX, puoi anche distinguere tra shell normale e shell annidata. Questo evita di aprire tmux dentro tmux senza volerlo, cosa che complica le scorciatoie e confonde il prefisso. In pratica: se sei già dentro tmux, non ne apri un altro a meno che tu non sappia esattamente perché lo stai facendo.
Copy mode, scrollback e selezione del testo
Una delle funzioni più sottovalutate di tmux è la modalità di copia. Serve per scorrere l’output, cercare stringhe e selezionare testo senza dipendere dal terminale grafico. In ambienti remoti o minimalisti è spesso la differenza tra lavorare bene e perdere tempo a copiare output in file temporanei.
Entra in copy mode con:
Ctrl-b [
Da lì puoi muoverti, cercare e selezionare. Se hai attivato i keybinding in stile vi, i movimenti diventano più prevedibili. Una volta selezionato il testo, puoi copiarlo nel buffer di tmux e poi incollarlo con:
Ctrl-b ]
Per chi gestisce log applicativi, il copy mode è utile anche solo per prendere un errore senza dover aprire un secondo terminale. Se invece vuoi una soluzione più strutturata, puoi combinare tmux con less, grep e journalctl per produrre output più corto e leggibile prima ancora di entrare in copy mode.
Integrazione con file di configurazione e automazione
tmux non è solo una scorciatoia interattiva. Puoi anche usarlo come parte di workflow ripetibili. Per esempio, puoi avviare una sessione con più finestre già predisposte per un progetto o per un host specifico.
Un approccio semplice è creare uno script shell che definisca la sessione. Ecco un esempio minimale:
#!/usr/bin/env bash
set -euo pipefail SESSION="progetto" tmux has-session -t "$SESSION" 2>/dev/null || tmux new-session -d -s "$SESSION" -n shell tmux new-window -t "$SESSION" -n logs 'tail -f /var/log/syslog'
tmux new-window -t "$SESSION" -n app 'cd ~/app && npm run dev' tmux attach -t "$SESSION"
Questo tipo di script è utile, ma va mantenuto con attenzione. Se i comandi dentro le finestre cambiano spesso, meglio non incapsulare troppa logica nello script. Tienilo corto e leggibile. Se serve più complessità, sposta il resto in script separati o in systemd user service, lasciando a tmux solo il ruolo di orchestratore del terminale.
Per chi usa provisioning o standardizzazione, conviene versionare il file .tmux.conf insieme agli altri dotfile. In questo modo puoi replicare il comportamento su più macchine senza dover ricordare a memoria tutti i dettagli. Il vantaggio è operativo, non estetico: meno differenze tra host, meno sorprese durante un intervento.
Mouse, clipboard e terminali moderni
Molti amministratori preferiscono lavorare quasi solo da tastiera; altri vogliono poter cliccare e selezionare con il mouse. tmux supporta entrambi gli approcci. Abilitare il mouse non ti obbliga a usarlo sempre, ma ti dà una via più comoda per il resize dei pannelli, lo scroll e la selezione.
Con set -g mouse on puoi usare il puntatore per interagire con finestre e pannelli. Su alcuni terminali moderni la copia nel clipboard di sistema può richiedere passaggi aggiuntivi o integrazioni specifiche, soprattutto se lavori in SSH puro. In quel caso conviene distinguere tra buffer di tmux e clipboard del desktop: non sono la stessa cosa.
Se lavori in ambienti grafici, puoi integrare tmux con strumenti come xclip, xsel o le funzionalità native del terminale, ma la compatibilità varia. La regola prudente è non dare per scontato che un testo copiato in tmux finisca automaticamente negli appunti del sistema. Va verificato caso per caso, soprattutto su macchine remote e su sessioni multiplexate annidate.
Sessioni persistenti e manutenzione: dove tmux fa davvero la differenza
Il valore di tmux emerge quando il terminale non è solo un’interfaccia, ma un posto di lavoro. Durante una manutenzione puoi lasciare un pannello con i log, uno con il monitoraggio delle risorse e uno con i comandi di test. Se la connessione salta, rientri e ritrovi tutto. Se devi passare da un’attività all’altra, non perdi il contesto.
Questo è particolarmente utile in presenza di interventi lunghi: aggiornamenti, migrazioni, rebuild di indici, debug di servizi systemd, verifiche su database o analisi di code path che richiedono tempo. tmux non sostituisce gli strumenti di osservabilità, ma ti dà una superficie di lavoro più stabile.
Un esempio concreto: in una sessione puoi tenere journalctl -fu servizio, in un’altra il deploy, in un’altra ancora un test sintetico con curl. Se qualcosa va storto, il confronto immediato tra log e comportamento applicativo ti fa perdere meno tempo rispetto al rimbalzo continuo tra finestre separate.
Errori comuni da evitare
Il primo errore è usare tmux come se fosse solo una shell “più bella”. In realtà cambia il modello operativo, e se non lo organizzi bene rischi di creare una foresta di sessioni anonime e finestre senza nome. Dopo pochi giorni, la comodità iniziale si trasforma in disordine.
Il secondo errore è annidare tmux senza motivo. Se sei già dentro una sessione e ne apri un’altra, le scorciatoie diventano più difficili da ricordare e il prefisso può confondere. Di norma, una sessione ben progettata è sufficiente.
Il terzo errore è cambiare troppe impostazioni insieme. Quando qualcosa non funziona, non sai più quale opzione abbia rotto il comportamento. Meglio introdurre una modifica, verificarla, e solo dopo passare alla successiva. È la stessa disciplina che useresti su un file di configurazione in produzione.
Configurazione consigliata di partenza
Se vuoi un punto di partenza ragionevole, questa base è equilibrata per uso amministrativo quotidiano:
# ~/.tmux.conf
set -g mouse on
set -g history-limit 50000
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
setw -g mode-keys vi
set -g status-position bottom
set -g status-interval 5
Non è una ricetta universale, ma è un profilo solido. Il mouse semplifica l’uso misto tastiera/puntatore. La history ampia aiuta con i log. Gli indici da 1 abbassano il rischio di errori mentali. Il riordino automatico delle finestre evita spazi vuoti dopo chiusure e riaperture. Il refresh dello status ogni 5 secondi mantiene l’interfaccia reattiva senza esagerare con gli aggiornamenti.
Se vuoi andare oltre, valuta plugin e configurazioni più articolate, ma fallo solo dopo aver consolidato i fondamenti. tmux dà il meglio quando la configurazione resta leggibile anche a distanza di mesi. Un file breve e chiaro vale più di una collezione di opzioni copiate da vari blog senza un criterio unico.
Verifica finale: installazione, sessione e riattacco
Il controllo finale è semplice e deve confermare tre cose: il binario esiste, la sessione si crea, il riattacco funziona. Esegui questi passaggi e considera l’installazione pronta solo se tutti e tre passano.
Verifica la versione con
tmux -V. Atteso: una stringa del tipotmux 3.x.Crea una sessione di test con
tmux new -s test. Atteso: entri in una nuova sessione senza errori.Staccati con
Ctrl-b de controllatmux ls. Atteso: la sessionetestrisulta elencata.Rientra con
tmux attach -t test. Atteso: torni nella sessione precedente, con finestra e pannelli intatti.
Se uno di questi passaggi fallisce, il punto da controllare è sempre concreto: pacchetto installato, permessi dell’utente, eventuale configurazione in ~/.tmux.conf e presenza di sessioni già attive con lo stesso nome. In caso di dubbio, parti dalla verifica più banale: versione, sessioni, logica di attach. Di solito il problema è lì, non in un bug misterioso.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.