Por que existem tantos / dev / tty no Linux?

26

No Ubuntu 10.04, se eu verificar em / dev, há mais de 50 ttys. tty0, tty1, tty2 ....

Eu entendo que tty é um dispositivo de caractere para entrada / saída do console.

  1. mas por que há tantos deles? é algo como sinuca?

  2. e qual é a diferença entre / dev / pts / 0, 1, 2 ..., / dev / tty?

  3. Se eu abrir um terminal, um novo número será criado em / dev / pts. mas não sei quando / dev / tty? é usado.

    mesmo se eu criar uma conexão SSH, o número de / dev / tty s é o mesmo.

    e se eu fizer

    cat /dev/tty0
    

    e digite algo no teclado, recebo saídas correspondentes. por que isso está acontecendo?

por daehee 16.07.2012 / 14:41

2 respostas

24

Os ttys não são apenas dispositivos de entrada / saída. Eles também fazem um trabalho especial de atuar como o terminal de controle de uma sessão, como enviar sinais (Ctrl + C). / dev / ttyNN são consoles virtuais, que são telas em tela cheia no monitor.

Os terminais começam em / dev / tty1. Você pode alternar para esses consoles, normalmente, pressionando as teclas Ctrl + Alt + Fn.

por exemplo, Ctrl + Alt + F1 leva você ao primeiro terminal virtual. Atualmente, a maioria das distribuições Linux executa o servidor X a partir do tty1. Então, pressionar Ctrl + Alt + F1 pode não ter efeito.

$ 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 irá levá-lo ao segundo terminal. Normalmente, as distribuições executam um programa de login (agetty) no terminal virtual.

$ ps ax | grep tty2 | grep -v grep
31865 tty2     Ss+    0:00 /sbin/agetty tty2 38400

Os programas de login fornecem um prompt de login e permitem que você faça o login com nome de usuário / senha. Os scripts init decidem, onde todo o programa de login será executado. Então, dependendo de que você pode ou não ver um prompt de login, digamos tty9. Para voltar à sua interface GUI, pressione Ctrl + Alt + F1 (como na saída de exemplo acima).

/ dev / tty0 é um dispositivo especial, que aponta para o terminal atual. Portanto, independente de onde você o executa (qualquer console virtual), qualquer coisa lida de / escrita para tty0 vai para o seu terminal atual.

A segunda coluna em 'ps ax' também fornece o terminal de controle do programa. Para alguns programas, como daemons, você pode ver que a coluna é '?', O que significa que eles não estão vinculados a um terminal.

/ dev / pts / 0 etc são dispositivos de terminal da psuedo, que não estão conectados à exibição do sistema. por exemplo, o terminal que você recebe quando abre um terminal gnome ou qualquer outro terminal GUI. Essas são abordagens baseadas em cliente-servidor, nas quais o lado do cliente será exportado para programas, como o bash. Os dados enviados pelo programa para o pseudo-terminal são enviados para o lado 'servidor' (que normalmente é monitorado por outro programa, como o gnome-terminal). O processo de controle (lado do servidor) determina o que precisa ser enviado para o terminal, que eventualmente é visto pelo cliente. Esses dispositivos ajudam você a abrir vários 'terminais GUI' sem qualquer limite em seu sistema, ainda fornecendo o mesmo terminal antigo como controles (ioctl (), configuração de cor, envio de sinais [Ctrl + C] etc.).

    
por 16.07.2012 / 15:34
1

Eu só quero esclarecer as relações deste tipo de coisas.

Primeiro, / dev / tty está no nível do processo, pode ser ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1) e outra coisa.

/ dev / tty0 é um alias do console virtual atual (em primeiro plano), por isso poderia ser tty1, tty2 e assim por diante. Observe que ttyS0 não é um alias; É a primeira porta serial.

/ dev / console é o console do sistema, ele aponta para / dev / tty0 como padrão. Pode ser ttyn, ttySn, ttyUSBn, lpn e assim por diante.

Aproximadamente, / dev / tty > / dev / cosole > / dev / tty0

    
por 18.03.2017 / 10:24

Tags