I tty non sono solo dispositivi di input / output. Fanno anche un lavoro speciale fungendo da 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 iniziano da / dev / tty1. È possibile passare a queste console, in genere, 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 da tty1. Quindi, premendo 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 accesso (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ò, è possibile che venga visualizzato o meno un prompt di accesso, ad esempio tty9. Per tornare all'interfaccia della GUI, premere Ctrl + Alt + F1 (come nell'esempio sopra riportato).
/ dev / tty0 è un dispositivo speciale, che punta al terminale corrente. Quindi, indipendentemente da dove lo si esegue (qualsiasi console virtuale), tutto ciò che viene letto / scritto su tty0 va al terminale corrente.
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 psuedo-terminali, che non sono collegati al display del sistema. per esempio, un terminale si ottiene quando si apre 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 cosa deve essere inviato al terminale, che alla fine viene visto dal client. Questi dispositivi ti aiutano ad aprire più 'terminali GUI' senza alcun limite al tuo sistema, fornendo comunque lo stesso vecchio terminale come i controlli (ioctl (), impostazione del colore, Segnali di invio [Ctrl + C] ecc.).