GNU/Linux >> Linux Esercitazione >  >> Linux

Perché ci sono così tanti /dev/tty in Linux?

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. ).


Linux
  1. Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

  2. Quando usare /dev/random vs /dev/urandom?

  3. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

  4. Come Linux usa /dev/tty e /dev/tty0

  5. È sbagliato collegare /dev/random a /dev/urandom su Linux?

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

Linux:cosa significa la lettera "u" in /dev/urandom?

Cosa sono i file /dev/zero e /dev/null in Linux

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

Perché Linux elenca le unità NVMe come /dev/nvme0 invece di /dev/sda?