No ubuntu 10.04, se eu verificar em / dev, existem mais de 50 ttys. tty0, tty1, tty2 ....
Entendo que tty é um dispositivo de caracteres para entrada / saída de console.
mas por que existem tantos? é algo como piscina?
e qual é a diferença entre / dev / pts / 0, 1, 2 ..., / dev / tty?
Se eu abrir um terminal, um novo número será criado em / dev / pts. mas eu não sei quando / dev / tty? é usado.
mesmo se eu criar uma conexão SSH, o número de / dev / tty s será o mesmo.
e se eu fizer
cat /dev/tty0
e digitar algo no teclado, recebo saídas correspondentes. Por que isso está acontecendo?
Respostas:
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 o envio de sinais (Ctrl + C). / dev / ttyNN são consoles virtuais, que são exibidos em tela cheia no monitor.
Os terminais começam em / dev / tty1. Você pode alternar para esses consoles, geralmente, pressionando as teclas Ctrl + Alt + Fn.
por exemplo, Ctrl + Alt + F1 leva você ao primeiro terminal virtual. Atualmente, a maioria das distribuições Linux roda o servidor X a partir do tty1. Portanto, pressionar Ctrl + Alt + F1 pode não ter efeito.
Ctrl + Alt + F2 o levará ao segundo terminal. Geralmente, as distribuições executam um programa de login (agetty) no terminal virtual.
Os programas de login fornecem um prompt de login e permitem que você faça login com nome de usuário / senha. Os scripts init decidem onde todo o programa de login será executado. Portanto, dependendo disso, você pode ou não ver um prompt de login, digamos tty9. Para voltar à sua interface GUI, pressione Ctrl + Alt + F1 (como no exemplo da saída acima).
/ dev / tty0 é um dispositivo especial, que aponta para o terminal atual. Portanto, independentemente de onde você o execute (qualquer console virtual), qualquer coisa lida / gravada em 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 psuedo-terminal, que não estão conectados à tela do sistema. por exemplo, o terminal obtido quando você abre um terminal gnome ou qualquer outro terminal da GUI. Essas são abordagens baseadas em cliente-servidor, onde 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 do 'servidor' (que geralmente é monitorado por outro programa, como o gnome-terminal). O processo de controle (lado do servidor) determina o que precisa ser enviado ao terminal, o que é eventualmente visto pelo cliente. Esses dispositivos ajudam você a abrir vários 'terminais da GUI' sem nenhum limite no sistema, ainda fornecendo o mesmo terminal antigo como controles (ioctl (), configuração de cores, envio de sinais [Ctrl + C] etc.).
fonte
man /dev/pts
é um bom começo,man termios
observe também que cliente / servidor é bidirecional entre os ptys - ptm e pts - onde um terminal virtual como gnome-terminal ou xterm geralmente está conectado ao mestre e um shell como bash, o escravo ./dev/tty
está o terminal de controle atual, mas não sei o que é/dev/tty0
, no entanto,/dev/tty1
é o KMSCON do Linux. E/dev/tty7
é um servidor X.Eu só quero esclarecer as relações desse tipo de coisa.
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), portanto pode ser tty1, tty2 e assim por diante. Observe que ttyS0 não é um alias; É a primeira porta serial.
/ dev / console é o console do sistema, aponta para / dev / tty0 como padrão. Pode ser ttyn, ttySn, ttyUSBn, lpn e assim por diante.
Aproximadamente, / dev / tty> / dev / cosole> / dev / tty0
fonte