Passare tra le tty con chvt su Linux
Su Linux, le tty virtuali sono console testuali locali accessibili da tastiera o da shell amministrativa. Il comando chvt serve a cambiare la tty attiva sul sistema, cioè a portare in primo piano una console virtuale specifica senza riavviare e senza terminare le sessioni in corso.
È uno strumento semplice, ma va usato con criterio: funziona bene in contesti di console locale, recovery, debugging di servizi che hanno bloccato il display manager, o quando serve spostarsi rapidamente tra terminali testuali. Non sostituisce ssh, non è un meccanismo di multiplexing, e non è pensato per ambienti remoti senza accesso alla console.
Che cosa fa davvero chvt
chvt cambia la tty attiva del kernel, cioè la console virtuale che riceve input da tastiera e che viene mostrata sul monitor collegato alla macchina. In pratica, se sei su tty1 e vuoi passare a tty3, puoi farlo con un comando come chvt 3.
Le tty virtuali di solito sono numerate da 1 a 6 sulle distribuzioni classiche con console testuale, anche se il numero reale può variare in base alla configurazione, al display manager e alla presenza di più sessioni grafiche. In molti sistemi, la sessione grafica gira su una tty alta, spesso tty7 o superiore, ma non bisogna dare per scontato il numero: dipende dallo stack grafico e dalla distro.
Il comando agisce sul kernel console subsystem, non sulla shell in sé. Quindi non “sposta” il processo corrente in un altro terminale: cambia solo quale console è visibile e attiva sul dispositivo locale.
Quando usare chvt
Usalo quando hai accesso fisico o console remota KVM/IPMI/iDRAC/iLO e ti serve passare da una console all’altra senza chiudere nulla.
- Recupero di una macchina con interfaccia grafica bloccata.
- Accesso a una console testuale per verifiche rapide di boot, log o servizi.
- Passaggio tra più sessioni locali aperte sullo stesso host.
- Diagnosi di problemi in cui il display manager non risponde ma il kernel è vivo.
Non è lo strumento giusto se vuoi condividere una sessione tra utenti, tenere persistente una shell o lavorare da remoto in modo affidabile. In quei casi servono tmux, screen o ssh.
Sintassi essenziale
La sintassi base è questa:
chvt Ndove N è il numero della tty verso cui vuoi passare.
Esempi:
chvt 1chvt 2chvt 7Il comando richiede in genere privilegi amministrativi, quindi spesso va eseguito con sudo:
sudo chvt 3Se la tty indicata non esiste o non è disponibile, il comando fallisce con un errore. Se la tty esiste ma non c’è nulla di interattivo associato, il passaggio può comunque avvenire ma non produrre l’effetto atteso lato operatore.
Verifica del contesto prima di usare chvt
Prima di cambiare console, conviene capire dove sei e quali tty sono disponibili. Questo riduce gli errori quando lavori su sistemi con più console o con stack grafico personalizzato.
ttyAtteso: restituisce qualcosa come /dev/tty1, /dev/tty2 o una pseudo-tty se sei in SSH. Se sei in una sessione remota, chvt in genere non è lo strumento adatto perché il cambio console riguarda il display locale.
Per vedere le sessioni attive con systemd:
loginctl list-sessionsPer capire quali tty sono in uso puoi anche controllare:
whoAtteso: elenco utenti e terminali, ad esempio tty1, tty2, ecc. Se la macchina usa un display manager, puoi vedere una sessione grafica associata a una tty specifica.
Passare tra tty con tastiera e con comando
Di solito il passaggio tra tty si fa con la tastiera: Ctrl+Alt+F1, Ctrl+Alt+F2, e così via. Su molte distribuzioni moderne le console testuali sono mappate su Ctrl+Alt+F3 fino a Ctrl+Alt+F6, mentre la sessione grafica può occupare un’altra tty.
chvt è utile quando la tastiera non è comoda, quando lavori da script o quando hai accesso a una shell con privilegi amministrativi e vuoi cambiare console in modo esplicito.
Esempio pratico:
- Verifica la tty corrente con
tty. - Identifica la console di destinazione con
whoo con la tua conoscenza dell’host. - Esegui
sudo chvt 2. - Controlla fisicamente o via console remota che il display sia passato alla tty attesa.
Se il cambio non avviene, il problema non è quasi mai nel comando in sé: spesso è un limite di permessi, una console non disponibile, oppure un ambiente senza accesso alla console virtuale del kernel.
Permessi e limiti operativi
chvt richiede privilegi sufficienti per interagire con la console virtuale. In pratica, su sistemi standard serve root o sudo. Su alcune configurazioni restrittive, anche con sudo il comando può non funzionare se non hai una vera console locale.
Se sei dentro una sessione SSH, il comando può essere eseguito ma il risultato non sarà quello che ti aspetti, perché stai agendo sulla console del server, non sulla tua sessione remota. Questo è un punto importante: remote shell non equivale a console locale.
In ambienti virtualizzati o in cloud, la disponibilità delle tty dipende dalla console del provider, dal kernel e dal metodo di accesso. Alcune VM espongono console seriali o display virtuali in modo diverso rispetto a un server fisico.
Relazione con systemd, getty e display manager
Le tty testuali sono spesso gestite da istanze di getty. Su sistemi con systemd, puoi vedere i servizi associati con:
systemctl status getty@tty1.serviceOppure:
systemctl list-units 'getty@*'Atteso: unità attive o inattive che indicano quali console hanno un prompt di login disponibile. Se una tty non ha un getty attivo, potresti comunque passarci con chvt, ma potresti ritrovarti su una console vuota.
Con il display manager la situazione cambia: la sessione grafica può occupare una tty dedicata. In caso di troubleshooting grafico, chvt è utile per uscire dalla GUI e tornare a una console testuale dove leggere log e fermare servizi problematici.
Esempi d’uso realistici
1. Recupero di una macchina con GUI bloccata
Se la sessione grafica è congelata ma il kernel risponde, puoi passare a una tty testuale, fare login e verificare lo stato del sistema.
sudo chvt 2Poi controlli i log:
journalctl -xe2. Verifica rapida di un servizio
Se hai accesso solo alla console locale e vuoi spostarti su una tty dove hai aperto una shell amministrativa, usi il numero della console corretta.
sudo chvt 43. Cambio console in manutenzione
Durante una finestra di manutenzione, puoi tenere una tty dedicata ai log e un’altra ai comandi. In questo caso chvt ti permette di alternarle velocemente senza chiudere sessioni.
Errori comuni
Tty non esistente: il numero indicato non corrisponde a una console disponibile. Verifica con who, con la configurazione del sistema e con il comportamento della tastiera.
Nessun effetto visibile: stai operando da SSH o su una macchina senza console locale accessibile. In questo caso il comando può essere formalmente corretto ma operativamente inutile.
Permessi insufficienti: chvt richiede privilegi elevati. Prova con sudo e verifica eventuali policy di sicurezza.
Ambiente grafico particolare: alcune configurazioni moderne non usano lo schema classico delle tty come nelle distribuzioni tradizionali. Il numero della console grafica può variare.
Alternative utili
Se il tuo obiettivo è lavorare in modo persistente e non perdere la sessione, tmux e screen sono più adatti di chvt. Se invece vuoi amministrare da remoto, ssh è la scelta corretta.
Se ti serve vedere le console del kernel senza interazione locale, puoi anche valutare una console seriale o accessi out-of-band come IPMI, iDRAC o iLO, a seconda dell’hardware disponibile.
Buone pratiche operative
Prima di usare chvt in produzione o su un server critico, conviene avere almeno un canale di accesso alternativo. Se il passaggio di tty coincide con un problema di input, display o sessione grafica, devi poter rientrare senza dipendere solo dalla console locale.
- Verifica che la macchina risponda a livello kernel e non solo a livello GUI.
- Conserva una sessione SSH aperta se possibile.
- Non usare
chvtcome sostituto di un terminal multiplexer. - Su server headless, preferisci strumenti da shell o console seriale.
Se stai documentando una procedura per altri operatori, specifica sempre quale tty usare e in quale contesto, perché la numerazione può cambiare tra distribuzioni e configurazioni.
Comandi rapidi di riferimento
ttywhologinctl list-sessionssudo chvt 1sudo chvt 2systemctl status getty@tty1.serviceAssunzione: sistema Linux con console virtuali gestite dal kernel e privilegi amministrativi disponibili per il cambio tty.
Quando chvt è la scelta giusta
È la scelta giusta quando vuoi cambiare console locale attiva in modo immediato, controllato e senza interrompere il sistema. È una funzione piccola, ma in troubleshooting fa la differenza tra dover riavviare e poter recuperare una macchina in pochi secondi.
Se il contesto è chiaro, chvt è affidabile e diretto. Se il contesto non è chiaro, prima identifica il layer di accesso: locale, console remota, SSH, display manager o sessione grafica. Da lì capisci se il comando è appropriato o se serve un altro strumento.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.