procura o dispositivo pelo seu arquivo tty?

7

Aqui é do meu Ubuntu

$ ls /dev/*tty*
/dev/tty    /dev/tty17  /dev/tty26  /dev/tty35  /dev/tty44  /dev/tty53  /dev/tty62      /dev/ttyS12  /dev/ttyS21  /dev/ttyS30
/dev/tty0   /dev/tty18  /dev/tty27  /dev/tty36  /dev/tty45  /dev/tty54  /dev/tty63      /dev/ttyS13  /dev/ttyS22  /dev/ttyS31
/dev/tty1   /dev/tty19  /dev/tty28  /dev/tty37  /dev/tty46  /dev/tty55  /dev/tty7       /dev/ttyS14  /dev/ttyS23  /dev/ttyS4
/dev/tty10  /dev/tty2   /dev/tty29  /dev/tty38  /dev/tty47  /dev/tty56  /dev/tty8       /dev/ttyS15  /dev/ttyS24  /dev/ttyS5
/dev/tty11  /dev/tty20  /dev/tty3   /dev/tty39  /dev/tty48  /dev/tty57  /dev/tty9       /dev/ttyS16  /dev/ttyS25  /dev/ttyS6
/dev/tty12  /dev/tty21  /dev/tty30  /dev/tty4   /dev/tty49  /dev/tty58  /dev/ttyprintk  /dev/ttyS17  /dev/ttyS26  /dev/ttyS7
/dev/tty13  /dev/tty22  /dev/tty31  /dev/tty40  /dev/tty5   /dev/tty59  /dev/ttyS0      /dev/ttyS18  /dev/ttyS27  /dev/ttyS8
/dev/tty14  /dev/tty23  /dev/tty32  /dev/tty41  /dev/tty50  /dev/tty6   /dev/ttyS1      /dev/ttyS19  /dev/ttyS28  /dev/ttyS9
/dev/tty15  /dev/tty24  /dev/tty33  /dev/tty42  /dev/tty51  /dev/tty60  /dev/ttyS10     /dev/ttyS2   /dev/ttyS29
/dev/tty16  /dev/tty25  /dev/tty34  /dev/tty43  /dev/tty52  /dev/tty61  /dev/ttyS11     /dev/ttyS20  /dev/ttyS3

Eu tenho 7 consoles virtuais.

Eu também abri algumas abas dentro do terminal do gnome, e vários emacs (alguns executando shell, mas provavelmente eu os fechei todos), e sessões de tela (mas agora fechadas).

  1. qual é a diferença entre /dev/tty , /dev/tty[[:digit:]]+ , /dev/ttyprintk e /dev/ttyS[[:digit:]]+ ?
  2. Como posso descobrir a qual dispositivo cada arquivo tty corresponde?
  3. Alguns disseram que os arquivos do dispositivo para o pseudo-tty são / dev / pty , mas por que     não há arquivo pty ou dir aqui:

    $ ls /dev/*pty*
    ls: cannot access /dev/*pty*: No such file or directory
    
  4. Não tenho certeza do que /dev/*pts* significa:

    $ ls /dev/*pts* 
    0  1  10  11  12  13  14  15  16  17  18  2  20  21  22  23  24  26  3  4  5  6  7  8  9  ptmx
    

Obrigado e cumprimentos!

    
por Tim 08.08.2014 / 16:18

1 resposta

4

O que é um terminal?

Um terminal consiste em uma tela e um teclado que se usa para se comunicar remotamente com um computador (o host). Um usa quase como se fosse um computador pessoal, mas o terminal é remoto de seu computador host com o qual ele se comunica (do outro lado da sala ou mesmo do outro lado do mundo).

Pergunta 1

  1. /dev/tty significa o terminal de controle (se houver) para o Processo atual. Para descobrir quais tty's estão ligados aos quais processos usam o comando ps -a no prompt do shell (comando linha). Veja a coluna tty . Para o processo de shell em que você está, /dev/tty é o terminal que você está usando agora.
  2. No Linux, o monitor do PC é chamado de console e tem vários dispositivos arquivos especiais associados a ele: tty0 , tty1 , tty2 , etc. Quando você logar você está em tty1 . Para ir para tty2 pressione Alt - F2 . tty1 , tty2 , etc. são virtuais terminais (às vezes chamados de "consoles virtuais"). Você pode entrar para diferentes terminais virtuais e, assim, ter algumas sessões diferentes com o computador ligado ao mesmo tempo. Você alterna entre eles usando a tecla Alt - F? onde "?" é o número do terminal virtual desejado. O console também é conhecido como /dev/tty0 e mensagens do sistema podem ir para esse dispositivo e exibir seu console. Somente o sistema ou o usuário root pode gravar /dev/tty0 para o qual /dev/console às vezes é vinculado.
  3. ttyprintk é um pseudo driver TTY, que permite aos usuários fazer printk mensagens, via saída para ttyprintk device.
  4. /dev/tty/S[[:digit:]] representa as portas seriais. Cada terminal está conectado a uma porta serial no computador host (geralmente PC). As portas têm nomes / números. Os primeiros são: ttyS0 , ttyS1 , ttyS2 , etc. Estes são representados por arquivos especiais encontrados no diretório /dev (device). ttyS0 corresponde a COM1 no DOS ou Windows. ttyS1 é COM2, etc.

A Questão 3 e a Questão 4 estão relacionadas. Gilles tem uma explicação maravilhosa de aqui . Alguns dos trechos de sua resposta são,

Pseudo-terminals are provided by a terminal emulator, which is an application. Some types of pseudo-terminals are:

  • GUI applications such as xterm, gnome-terminal, konsole, … transform keyboard and mouse events into text input and display output graphically in some font.
  • Multiplexer applications such as screen and tmux relay input and output from and to another terminal, to decouple text mode applications from the actual terminal.
  • Remote shell applications such as sshd, telnetd, rlogind, … relay input and output between a remote terminal on the client and a pty on the server.

Além disso, na página wiki do pseudo-terminal , vejo as informações abaixo.

The master device file, which generally has a name of the form /dev/pty[p-za-e][0-9a-f], is the endpoint for communication with the terminal emulator. With this [p-za-e] naming scheme, there can be at most 256 tty pairs. Also, finding the first free pty master can be racy unless a locking scheme is adopted. For that reason, recent BSD operating systems, such as FreeBSD, implement Unix98 PTYs.[4]

BSD PTYs have been rendered obsolete by Unix98 ptys whose naming system does not limit the number of pseudo-terminals and access to which occurs without danger of race conditions. /dev/ptmx is the "pseudo-terminal master multiplexer". Opening it returns a file descriptor of a master node and causes an associated slave node /dev/pts/N to be created

Suspeito que /dev/pty não esteja disponível, e é por isso que você vê /dev/pts .

Referências

link

Linux: Diferença entre / dev / console, / dev / tty e / dev / tty0

link

    
por 08.08.2014 / 16:58

Tags