tmux: sessioni SSH persistenti che non muoiono mai (con split e pannelli)

Published on 13/07/2026 Linux

Quante volte hai lanciato un aggiornamento lungo su un server remoto, la connessione SSH è caduta e con essa anche il processo? tmux risolve il problema alla radice: crea sessioni terminali che vivono sul server, indipendenti dalla tua connessione. Ti disconnetti, il lavoro continua; ti riconnetti, ritrovi tutto esattamente come l'avevi lasciato.

Installazione

È già nei repository ufficiali di quasi tutte le distribuzioni.

sudo apt install tmux        # Debian/Ubuntu
sudo dnf install tmux        # Fedora/RHEL
sudo pacman -S tmux          # Arch

Il concetto chiave: sessioni che sopravvivono

Quando lanci tmux senza argomenti crei una nuova sessione. Da lì lavori come in un terminale normale, ma con un vantaggio enorme: puoi "staccarti" (detach) senza chiudere nulla.

tmux new -s deploy

Il flag -s assegna un nome alla sessione: molto meglio dei numeri progressivi di default quando ne tieni aperte diverse in parallelo.

Per staccarti senza uccidere la sessione, dentro tmux premi:

Ctrl+b poi d

La combinazione Ctrl+b è il "prefix" di tmux: quasi ogni comando comincia da lì. Una volta staccato, il processo continua a girare sul server. Puoi chiudere il terminale, spegnere il portatile, cambiare rete: la sessione resta viva finché il server è acceso.

Riattaccarsi alla sessione

Per elencare le sessioni attive:

tmux ls

Per rientrare in una sessione specifica:

tmux attach -t deploy

Se ne hai una sola aperta basta tmux attach. Questo comando è il motivo per cui tmux è diventato uno standard de facto per chi amministra server via SSH: niente più nohup o disown improvvisati, niente più processi persi per una disconnessione di rete.

Finestre: più schede nella stessa sessione

Dentro una sessione puoi aprire più "finestre" (window), come le tab di un browser.

  • Ctrl+b c — crea una nuova finestra
  • Ctrl+b n — passa alla finestra successiva
  • Ctrl+b p — torna alla finestra precedente
  • Ctrl+b 0..9 — vai direttamente alla finestra numero N
  • Ctrl+b , — rinomina la finestra corrente

Pannelli: dividere lo schermo

Qui tmux mostra il suo vero valore per il lavoro quotidiano: puoi dividere una finestra in più pannelli (pane) e vedere in contemporanea, ad esempio, i log applicativi, l'output di htop e la shell dove lanci i comandi.

  • Ctrl+b % — split verticale (due pannelli affiancati)
  • Ctrl+b " — split orizzontale (uno sopra, uno sotto)
  • Ctrl+b + frecce — spostati tra i pannelli
  • Ctrl+b z — ingrandisci il pannello corrente a schermo intero (stesso comando per tornare indietro)
  • Ctrl+b x — chiudi il pannello corrente

Un layout tipico durante un deploy: pannello principale con la shell operativa, split orizzontale sotto con journalctl -f sul servizio, e un pannello laterale con watch -n2 systemctl status app. Tutto dentro una singola finestra SSH.

Copy mode: scorrere l'output

Per scorrere l'output passato (utile se un comando ha prodotto molte righe) entra in copy mode:

Ctrl+b [

Da lì ti muovi con le frecce, selezioni testo con Spazio e copi con Invio. Per uscire senza copiare nulla premi q.

Un file di configurazione minimo ma utile

tmux legge ~/.tmux.conf all'avvio. Alcune modifiche che semplificano la vita da subito:

# Split più intuitivi
bind | split-window -h
bind - split-window -v

# Mouse abilitato: click per cambiare pannello, drag per ridimensionare
set -g mouse on

# Cronologia più lunga
set -g history-limit 10000

# Ricarica la config senza riavviare tmux
bind r source-file ~/.tmux.conf

Dopo aver salvato il file, applica le modifiche a una sessione già aperta con tmux source-file ~/.tmux.conf.

Screen: l'alternativa storica

screen fa più o meno lo stesso lavoro ed è ancora preinstallato su molti sistemi minimali. I comandi essenziali sono analoghi:

screen -S deploy      # crea sessione
Ctrl+a d              # detach
screen -r deploy      # riattacca
screen -ls            # elenca sessioni

tmux ha però una gestione dei pannelli più moderna e una configurazione più leggibile, motivo per cui oggi è la scelta di default in quasi tutti i workflow da terminale.

Un caso d'uso reale

Immagina di dover lanciare una migrazione di database che richiede venti minuti, su un server raggiunto da un portatile con una connessione Wi-Fi ballerina. Senza tmux, ogni disconnessione significherebbe ricominciare da capo o affidarsi a nohup comando & e sperare bene. Con tmux basta:

tmux new -s migrazione
./run_migration.sh
# Ctrl+b d per staccarsi, torni domani con:
tmux attach -t migrazione

Nessuna sorpresa, nessun processo perso: è probabilmente lo strumento con il miglior rapporto tra tempo di apprendimento e beneficio quotidiano per chi lavora su server remoti.