Come usare tmux su un VPS Linux
Impara a installare e usare tmux sul tuo VPS Linux per sessioni terminale persistenti, layout multi-pannello e protezione dalle disconnessioni SSH. Per Debian 12 e Ubuntu 24.04.
Ti connetti in SSH al tuo VPS, avvii una lunga migrazione del database e il Wi-Fi cade. Il processo muore. Il tuo lavoro e perso.
tmux risolve questo problema. Esegue le sessioni terminale direttamente sul server, indipendentemente dalla connessione SSH. Disconnettiti, riconnettiti e riprendi esattamente da dove avevi lasciato.
Questo tutorial copre tmux dall'installazione ai layout multi-pannello scriptati. Ogni comando funziona su Debian 12 o Ubuntu 24.04.
Cos'e tmux e perche usarlo su un VPS?
tmux e un terminal multiplexer. Permette di eseguire piu sessioni terminale all'interno di una singola connessione SSH, e queste sessioni restano attive sul server anche quando ti disconnetti.
tmux organizza il lavoro su tre livelli:
- Sessions (sessioni) sono il contenitore di livello superiore. Ogni sessione e uno spazio di lavoro indipendente. Puoi staccarti da una sessione e ricollegarti in seguito.
- Windows (finestre) vivono all'interno delle sessioni. Pensale come schede. Ogni finestra esegue la propria shell.
- Panes (pannelli) dividono una singola finestra in piu rettangoli, ognuno con il proprio comando in esecuzione.
Session "deploy"
├── Window 0: "editor"
│ ├── Pane 0: vim
│ └── Pane 1: file watcher
└── Window 1: "logs"
└── Pane 0: journalctl -f
Su un VPS, tmux offre tre vantaggi concreti:
- Protezione dalle disconnessioni SSH. I tuoi processi continuano a girare quando la connessione cade. Riconnettiti e ricollegati alla sessione.
- Workflow multi-pannello. Monitora i log in un pannello, esegui comandi in un altro, modifica file in un terzo. Tutto dentro una singola connessione SSH.
- Persistenza delle sessioni. Lascia una sessione attiva per giorni. Staccati a fine giornata, ricollegati domani.
Come installare tmux su Debian 12 e Ubuntu 24.04
tmux e nei repository predefiniti sia di Debian 12 che di Ubuntu 24.04. Un singolo comando per installarlo.
sudo apt update && sudo apt install -y tmux
Verifica l'installazione:
tmux -V
Output atteso su Debian 12:
tmux 3.3a
Output atteso su Ubuntu 24.04:
tmux 3.4
Nota: il numero di versione conferma che tmux e stato installato dai repository ufficiali. Se non vedi nulla o appare "command not found", l'installazione e fallita. Controlla l'output di apt per eventuali errori.
Come creare e gestire le sessioni tmux
Una sessione tmux e uno spazio di lavoro persistente che vive sul server. Avviane una, esegui i tuoi comandi, e resta attiva anche se chiudi il terminale.
Creare sessioni
Avvia una nuova sessione con un nome:
tmux new-session -s deploy
Questo crea una sessione chiamata "deploy" e ti collega ad essa. Vedrai una barra di stato verde in fondo al terminale. Quella barra conferma che sei dentro una sessione tmux.
Per creare una sessione senza collegarsi (utile negli script):
tmux new-session -d -s background
Verifica che esista:
tmux list-sessions
background: 1 windows (created Thu Mar 19 10:00:00 2026)
Come staccarsi da una sessione tmux e ricollegarsi
Questo e il flusso di lavoro fondamentale su VPS. Staccati da una sessione per liberare il terminale, poi ricollegati in seguito per riprendere il lavoro. La sessione continua a girare sul server.
Per staccarti, premi il prefix key seguito da d:
Ctrl-b d
Il prefix key e Ctrl-b per impostazione predefinita. Premi Ctrl e b insieme, rilascia entrambi, poi premi d. Ogni keybinding di tmux funziona cosi: prima il prefix, poi il tasto azione.
Il terminale torna alla shell normale. La sessione e ancora attiva.
Per ricollegarti:
tmux attach -t deploy
Se hai una sola sessione, puoi omettere il nome:
tmux attach
Verifica quali sessioni sono in esecuzione:
tmux list-sessions
deploy: 1 windows (created Thu Mar 19 10:00:00 2026) (attached)
background: 1 windows (created Thu Mar 19 10:05:00 2026)
L'etichetta (attached) indica a quale sessione e collegato il tuo terminale.
Terminare sessioni
Quando hai finito con una sessione, eliminala:
tmux kill-session -t background
Verifica che sia stata rimossa:
tmux list-sessions
Per terminare tutte le sessioni e fermare completamente il server tmux:
tmux kill-server
Rinominare sessioni
Dall'interno di una sessione, premi:
Ctrl-b $
Digita il nuovo nome e premi Invio. Utile quando hai avviato una sessione senza nome e tmux le ha assegnato un numero.
Come usare le finestre tmux per organizzare le attivita
Le finestre (windows) sono schede all'interno di una sessione. Ogni finestra esegue la propria shell. Usale per separare attivita che non devono essere visibili contemporaneamente.
Crea una nuova finestra:
Ctrl-b c
La barra di stato si aggiorna mostrando la nuova finestra. L'asterisco (*) segna la finestra attiva:
[deploy] 0:bash 1:bash*
Passare da una finestra all'altra
Per numero:
Ctrl-b 0 # Go to window 0
Ctrl-b 1 # Go to window 1
Ciclicamente:
Ctrl-b n # Next window
Ctrl-b p # Previous window
Rinominare una finestra
Ctrl-b ,
Digita un nome significativo come "logs" o "editor" e premi Invio. I nomi rendono la barra di stato leggibile quando hai diverse finestre aperte.
Chiudere una finestra
Digita exit nella shell, oppure premi:
Ctrl-b &
tmux chiede conferma prima di chiudere.
Come dividere il terminale in pannelli
I pannelli (panes) dividono una finestra in piu terminali visibili contemporaneamente. Qui tmux da il meglio per l'amministrazione VPS: guarda i log in un pannello mentre esegui comandi in un altro.
Dividi il pannello corrente orizzontalmente (sopra e sotto):
Ctrl-b "
Dividi il pannello corrente verticalmente (sinistra e destra):
Ctrl-b %
Dopo la divisione, hai due pannelli. Il bordo verde evidenzia il pannello attivo.
Come navigare e ridimensionare i pannelli tmux
Spostati tra i pannelli con i tasti freccia:
Ctrl-b ↑ # Move to pane above
Ctrl-b ↓ # Move to pane below
Ctrl-b ← # Move to pane left
Ctrl-b → # Move to pane right
Ridimensiona i pannelli tenendo premuto il prefix e poi i tasti freccia:
Ctrl-b Ctrl-↑ # Resize pane up
Ctrl-b Ctrl-↓ # Resize pane down
Ctrl-b Ctrl-← # Resize pane left
Ctrl-b Ctrl-→ # Resize pane right
Zoom di un pannello
Serve un pannello a schermo intero temporaneamente? Attiva lo zoom:
Ctrl-b z
Premilo di nuovo per ripristinare il layout diviso. La barra di stato mostra una Z accanto al nome della finestra quando un pannello e in zoom.
Chiudere un pannello
Digita exit nel pannello, oppure premi:
Ctrl-b x
tmux chiede conferma. Se chiudi l'ultimo pannello di una finestra, anche la finestra si chiude.
Scambiare pannelli
Ruota le posizioni dei pannelli:
Ctrl-b { # Move current pane left/up
Ctrl-b } # Move current pane right/down
Come usare la copy mode di tmux per scorrere e cercare
Per impostazione predefinita, non puoi scorrere verso l'alto in un pannello tmux con la rotella del mouse o Page Up. La copy mode ti offre scrollback, ricerca e selezione del testo.
Entra in copy mode:
Ctrl-b [
Ora sei in copy mode. L'angolo in alto a destra mostra la tua posizione nel buffer di scrollback (es. [0/500]).
Navigazione in copy mode
tmux usa i tasti stile emacs per impostazione predefinita. Se la variabile d'ambiente EDITOR o VISUAL contiene "vi", usa i tasti stile vi.
Modalita emacs (predefinita):
| Azione | Tasto |
|---|---|
| Scorrere su | Ctrl-Up o Page Up |
| Scorrere giu | Ctrl-Down o Page Down |
| Spostare cursore | Tasti freccia |
| Inizio riga | Ctrl-a |
| Fine riga | Ctrl-e |
| Cerca avanti | Ctrl-s |
| Cerca indietro | Ctrl-r |
| Inizia selezione | Ctrl-Space |
| Copia selezione | Alt-w |
| Esci da copy mode | q |
Modalita vi:
| Azione | Tasto |
|---|---|
| Scorrere su | Ctrl-u (mezza pagina) |
| Scorrere giu | Ctrl-d (mezza pagina) |
| Spostare cursore | h j k l |
| Cerca avanti | / |
| Cerca indietro | ? |
| Inizia selezione | Space |
| Copia selezione | Enter |
| Esci da copy mode | q |
Dopo aver copiato, incolla con:
Ctrl-b ]
Nota: la copy mode serve anche per cercare nell'output lungo dei comandi. Se una build fallisce e l'errore e uscito dallo schermo, entra in copy mode e cerca all'indietro con Ctrl-r (emacs) o ? (vi).
Come personalizzare tmux con .tmux.conf
tmux legge la configurazione da ~/.tmux.conf all'avvio del server. Da tmux 3.2 in poi, controlla anche ~/.config/tmux/tmux.conf.
Questa configurazione funziona bene per l'amministrazione VPS. Ogni riga e spiegata.
Crea o modifica il file di configurazione:
nano ~/.tmux.conf
# -- General -----------------------------------------------------------------
# Change prefix from Ctrl-b to Ctrl-a (easier to reach)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Start window numbering at 1 (0 is far from the prefix key)
set -g base-index 1
setw -g pane-base-index 1
# Renumber windows when one is closed (no gaps)
set -g renumber-windows on
# Increase scrollback buffer (default is 2000 lines)
set -g history-limit 50000
# Reduce escape delay (snappier key response)
set -g escape-time 10
# Enable mouse support (scroll, click panes, resize)
set -g mouse on
# -- Display -----------------------------------------------------------------
# 256-color terminal support
set -g default-terminal "tmux-256color"
# -- Key Bindings ------------------------------------------------------------
# Split panes with | and - (more intuitive than " and %)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# Navigate panes with Alt-arrow (no prefix needed)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Reload config with prefix r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"
# -- Copy Mode ---------------------------------------------------------------
# Use vi keys in copy mode
setw -g mode-keys vi
# -- Status Bar --------------------------------------------------------------
# Status bar position
set -g status-position bottom
# Update interval (seconds)
set -g status-interval 5
# Clean status bar colors
set -g status-style "bg=colour235,fg=colour136"
set -g status-left "#[fg=colour235,bg=colour136] #S #[fg=colour136,bg=colour235] "
set -g status-right "#[fg=colour136] %H:%M %d-%b-%Y "
set -g status-left-length 20
Salva e esci. Applica la configurazione a una sessione tmux in esecuzione:
tmux source-file ~/.tmux.conf
Verifica premendo Ctrl-a (il nuovo prefix) invece di Ctrl-b. Se funziona, la configurazione e stata caricata correttamente.
Imposta i permessi corretti sul file di configurazione:
chmod 600 ~/.tmux.conf
ls -la ~/.tmux.conf
-rw------- 1 youruser youruser 1234 Mar 19 10:00 /home/youruser/.tmux.conf
Il permesso 600 significa che solo il tuo utente puo leggere e scrivere il file. Questo conta se memorizzi script personalizzati o percorsi sensibili nella configurazione tmux.
Modifiche principali rispetto ai valori predefiniti:
- Prefix
Ctrl-aposiziona il tasto sotto il mignolo sinistro.Ctrl-brichiede un allungamento. Questo e il rebind piu comune. base-index 1fa partire le finestre da 1 invece che da 0. PremereCtrl-a 1per la prima finestra e naturale.history-limit 50000conserva 50.000 righe di scrollback per pannello. Il valore predefinito di 2.000 e troppo basso per seguire i log.escape-time 10riduce il ritardo che tmux attende dopo aver ricevuto il tasto Escape. Il valore predefinito (500ms) rende Vim lento dentro tmux.-c "#{pane_current_path}"sui binding di split apre i nuovi pannelli nella stessa directory in cui ti trovi, invece della home directory.mode-keys viattiva la navigazione stile vi in copy mode. Cambia inemacsse preferisci.
Come installare i plugin tmux con tpm
tmux Plugin Manager (tpm) permette di installare plugin da GitHub. Due plugin che vale la pena conoscere:
- tmux-resurrect salva e ripristina le sessioni tmux dopo un riavvio del server
- tmux-continuum salva automaticamente le sessioni a intervalli regolari
Installare tpm
Clona il repository:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Aggiungi queste righe in fondo a ~/.tmux.conf:
# -- Plugins -----------------------------------------------------------------
# Plugin manager
set -g @plugin 'tmux-plugins/tpm'
# Save/restore sessions across reboots
set -g @plugin 'tmux-plugins/tmux-resurrect'
# Auto-save sessions every 15 minutes
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'
# Initialize tpm (keep this line at the very bottom)
run '~/.tmux/plugins/tpm/tpm'
Ricarica la configurazione:
tmux source-file ~/.tmux.conf
Installa i plugin dall'interno di tmux:
Ctrl-a I
Quella e una I maiuscola. tpm scarica e installa i plugin. Vedrai un messaggio al termine.
Verifica che i plugin siano installati:
ls ~/.tmux/plugins/
tmux-continuum tmux-resurrect tpm
Usare tmux-resurrect
Salva il layout della sessione corrente:
Ctrl-a Ctrl-s
Ripristina dopo un riavvio:
Ctrl-a Ctrl-r
tmux-resurrect salva il layout delle finestre, le divisioni dei pannelli e la directory corrente di ogni pannello. Con tmux-continuum attivo, questo avviene automaticamente ogni 15 minuti.
Come gestire sessioni tmux annidate via SSH
Quando esegui tmux in locale e ti connetti in SSH a un VPS che ha anch'esso tmux, ti ritrovi con tmux dentro tmux. Entrambe le istanze rispondono allo stesso prefix key. I tuoi tasti vanno al tmux esterno (locale) invece che a quello interno (remoto).
La soluzione: invia il prefix key alla sessione interna premendolo due volte.
Ctrl-a Ctrl-a d # Detach the inner (remote) session
Il primo Ctrl-a viene catturato dal tmux esterno. Il secondo Ctrl-a viene inoltrato al tmux interno come suo prefix. Poi d stacca la sessione interna.
Un approccio piu pulito: usa prefix key diversi. Tieni Ctrl-a in locale e lascia Ctrl-b come predefinito sui server remoti. Cosi non ci sono conflitti.
Se hai gia cambiato il prefix su entrambi i lati, aggiungi un toggle al tuo ~/.tmux.conf locale:
# Toggle prefix passthrough with F12
bind -T root F12 \
set prefix None \;\
set key-table off \;\
set status-style "bg=colour238,fg=colour240" \;\
display-message "Prefix OFF (sending to inner)"
bind -T off F12 \
set -u prefix \;\
set -u key-table \;\
set -u status-style \;\
display-message "Prefix ON (local)"
Premi F12 per disattivare il prefix locale e passare tutti i tasti al tmux remoto. Premi di nuovo F12 per riattivarlo. La barra di stato oscurata ti da un indicatore visivo della modalita attiva.
Come creare layout tmux scriptati per l'amministrazione server
Invece di dividere i pannelli manualmente ogni volta che ti connetti in SSH, scrivi uno script per il layout. Questo crea uno spazio di lavoro ripetibile con un singolo comando.
Crea uno script:
nano ~/tmux-admin.sh
#!/usr/bin/env bash
# tmux-admin.sh: three-pane admin layout
SESSION="admin"
# Kill old session if it exists
tmux kill-session -t "$SESSION" 2>/dev/null
# Create session with first window named "monitor"
tmux new-session -d -s "$SESSION" -n "monitor"
# Top pane: system monitoring
tmux send-keys -t "$SESSION:monitor" "htop" C-m
# Split horizontally: bottom pane for logs
tmux split-window -v -t "$SESSION:monitor"
tmux send-keys -t "$SESSION:monitor.1" "journalctl -f" C-m
# Split bottom pane vertically: right pane for shell
tmux split-window -h -t "$SESSION:monitor.1"
# Create second window for a working shell
tmux new-window -t "$SESSION" -n "work"
# Select the first window
tmux select-window -t "$SESSION:monitor"
# Select the bottom-right pane (the empty shell)
tmux select-pane -t "$SESSION:monitor.2"
# Attach to the session
tmux attach -t "$SESSION"
Rendilo eseguibile e lancialo:
chmod 700 ~/tmux-admin.sh
~/tmux-admin.sh
Ottieni un layout a tre pannelli: htop in alto, journalctl -f in basso a sinistra e una shell vuota in basso a destra. Una seconda finestra chiamata "work" e disponibile per comandi ad hoc.
Nota: il C-m alla fine di send-keys e un ritorno a capo. Preme Invio per eseguire il comando.
Avvio automatico di tmux al boot con systemd
Per sessioni di amministrazione persistenti, crea un servizio systemd:
sudo nano /etc/systemd/system/tmux-admin@.service
[Unit]
Description=tmux admin session for %i
After=network.target
[Service]
Type=forking
User=%i
ExecStart=/usr/bin/tmux new-session -d -s admin
ExecStop=/usr/bin/tmux kill-session -t admin
[Install]
WantedBy=multi-user.target
Abilita e avvia il servizio per il tuo utente:
sudo systemctl enable --now tmux-admin@youruser.service
Verifica che sia in esecuzione:
sudo systemctl status tmux-admin@youruser.service
● tmux-admin@youruser.service - tmux admin session for youruser
Loaded: loaded (/etc/systemd/system/tmux-admin@.service; enabled)
Active: active (running)
Ora una sessione tmux chiamata "admin" si avvia automaticamente al boot. Collegati dopo l'SSH:
tmux attach -t admin
Sicurezza: permessi del socket tmux
tmux crea un file socket per la comunicazione tra i suoi processi server e client. Per impostazione predefinita, questo socket si trova in una directory sotto /tmp (es. /tmp/tmux-1000/).
Controlla la directory del socket:
ls -la /tmp/tmux-$(id -u)/
srwxrwx--- 1 youruser youruser 0 Mar 19 10:00 default
La directory del socket appartiene al tuo utente con permessi che impediscono l'accesso ad altri utenti. Questo significa che altri utenti sullo stesso server non possono collegarsi alle tue sessioni tmux.
Tuttavia, se esegui tmux come root, qualsiasi processo in esecuzione come root puo collegarsi. Evita di eseguire tmux come root per il lavoro quotidiano. Connettiti in SSH con il tuo utente normale e usa sudo per i singoli comandi che lo richiedono.
Se devi condividere una sessione tmux (per pair programming o mentoring), usa un socket condiviso esplicitamente:
tmux -S /tmp/shared-session new-session -s pair
chmod 770 /tmp/shared-session
L'altro utente si collega con:
tmux -S /tmp/shared-session attach -t pair
Revoca l'accesso quando hai finito:
chmod 700 /tmp/shared-session
Qualcosa non funziona?
tmux: command not found
Il pacchetto non e stato installato. Esegui sudo apt install -y tmux e controlla eventuali errori.
"no server running on /tmp/tmux-1000/default"
Non esiste nessuna sessione tmux. Avviane una con tmux new-session -s main.
I tasti non rispondono / prefix sbagliato
Controlla quale prefix e attivo: tmux show-options -g prefix. Se hai cambiato il prefix in .tmux.conf, ricarica con tmux source-file ~/.tmux.conf.
Lo scroll con il mouse non funziona
Aggiungi set -g mouse on a ~/.tmux.conf e ricarica. Sulle versioni di tmux precedenti alla 2.1, l'opzione era set -g mode-mouse on (sintassi diversa).
I colori sono sbagliati dentro tmux
Imposta set -g default-terminal "tmux-256color" in ~/.tmux.conf. Se il tuo emulatore di terminale supporta i colori true color (24-bit), aggiungi:
set -as terminal-overrides ",*-256color:Tc"
Sessione persa dopo il riavvio Le sessioni tmux non sopravvivono ai riavvii per impostazione predefinita. Usa tmux-resurrect e tmux-continuum (descritti sopra), oppure crea un servizio systemd per avviare automaticamente una sessione.
Vim e lento a uscire dalla modalita inserimento
Il valore predefinito di escape-time (500ms) causa questo problema. Imposta set -g escape-time 10 in ~/.tmux.conf.
Controlla i log di tmux per problemi piu profondi:
tmux start-server \; show-messages
Oppure guarda i log di sistema:
journalctl -u tmux-admin@youruser.service -f
Riferimento rapido keybinding tmux
Questa tabella usa il prefix predefinito Ctrl-b. Se hai rimappato il prefix a Ctrl-a (come nella configurazione sopra), usa quello.
Sessioni
| Azione | Keybinding | Comando |
|---|---|---|
| Nuova sessione con nome | tmux new-session -s name |
|
| Stacca | Ctrl-b d |
tmux detach |
| Lista sessioni | Ctrl-b s |
tmux list-sessions |
| Collegati | tmux attach -t name |
|
| Rinomina sessione | Ctrl-b $ |
tmux rename-session |
| Termina sessione | tmux kill-session -t name |
Finestre
| Azione | Keybinding | Comando |
|---|---|---|
| Nuova finestra | Ctrl-b c |
|
| Finestra successiva | Ctrl-b n |
|
| Finestra precedente | Ctrl-b p |
|
| Finestra per numero | Ctrl-b 0-9 |
|
| Rinomina finestra | Ctrl-b , |
|
| Chiudi finestra | Ctrl-b & |
|
| Lista finestre | Ctrl-b w |
Pannelli
| Azione | Keybinding | Comando |
|---|---|---|
| Divisione orizzontale | Ctrl-b " |
|
| Divisione verticale | Ctrl-b % |
|
| Naviga | Ctrl-b Arrow |
|
| Ridimensiona | Ctrl-b Ctrl-Arrow |
|
| Toggle zoom | Ctrl-b z |
|
| Chiudi pannello | Ctrl-b x |
|
| Scambia pannello | Ctrl-b { / Ctrl-b } |
Copy Mode
| Azione | Keybinding |
|---|---|
| Entra in copy mode | Ctrl-b [ |
| Incolla buffer | Ctrl-b ] |
| Cerca (emacs) | Ctrl-r (indietro) / Ctrl-s (avanti) |
| Cerca (vi) | ? (indietro) / / (avanti) |
| Esci | q |
Altro
| Azione | Keybinding |
|---|---|
| Prompt comandi | Ctrl-b : |
| Lista tutti i keybinding | Ctrl-b ? |
| Modalita orologio | Ctrl-b t |
Copyright 2026 Virtua.Cloud. Tutti i diritti riservati. Questo contenuto e un'opera originale del team Virtua.Cloud. La riproduzione, ripubblicazione o redistribuzione senza autorizzazione scritta e vietata.
Pronto a provare?
Distribuisci il tuo server in pochi secondi. Linux, Windows o FreeBSD.
Vedi piani VPS