I tty non sono solo dispositivi di input/output. Svolgono anche un lavoro speciale agendo come terminale di controllo per una sessione, come l'invio di segnali (Ctrl+C). /dev/ttyNN sono console virtuali, che sono visualizzazioni a schermo intero sul monitor.
I terminali partono da /dev/tty1. Puoi passare a queste console, di solito, premendo i tasti Ctrl+Alt+Fn.
ad esempio, Ctrl+Alt+F1 ti porta al primo terminale virtuale. Al giorno d'oggi, la maggior parte delle distribuzioni Linux esegue il server X dal tty1. Quindi, premere Ctrl+Alt+F1 potrebbe non avere effetto.
$ ps ax | grep Xorg | grep -v grep
1504 tty1 Ss+ 44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1
Ctrl+Alt+F2 ti porterà al secondo terminale. Di solito le distribuzioni eseguono un programma di login (agetty) sul terminale virtuale.
$ ps ax | grep tty2 | grep -v grep
31865 tty2 Ss+ 0:00 /sbin/agetty tty2 38400
I programmi di accesso forniscono una richiesta di accesso e consentono di accedere con nome utente/password. Gli script init decidono dove verrà eseguito tutto il programma di accesso. Quindi, a seconda di ciò, potresti vedere o meno un prompt di accesso, ad esempio tty9. Per tornare alla tua interfaccia GUI, premi Ctrl+Alt+F1 (come nell'output dell'esempio sopra).
/dev/tty0 è un dispositivo speciale, che punta al terminale corrente. Quindi, indipendentemente da dove lo esegui (qualsiasi console virtuale), qualsiasi cosa letta/scritta su tty0 va al tuo attuale terminale.
La seconda colonna in 'ps ax' fornisce anche il terminale di controllo del programma. Per alcuni programmi, come i demoni, potresti vedere che la colonna è '?', il che significa che non sono associati a un terminale.
/dev/pts/0 etc sono dispositivi pseudo-terminali, che non sono collegati al display di sistema. ad esempio, il terminale che ottieni quando apri un terminale gnome o qualsiasi altro terminale GUI. Si tratta di un approccio basato su client-server in cui il lato client verrà esportato in programmi, come bash. I dati inviati dal programma allo pseudo terminale vengono inviati al lato "server" (che di solito è monitorato da un altro programma, come gnome-terminal). Il processo di controllo (lato server) determina ciò che deve essere inviato al terminale, che alla fine viene visto dal client. Questi dispositivi ti aiutano ad aprire più "terminali GUI" senza alcun limite sul tuo sistema, fornendo sempre lo stesso vecchio terminale come controlli (ioctl(), impostazione del colore, invio di segnali [Ctrl+C] ecc. ).