Terminal emulador de terminal vs [duplicado]

4

Estou tentando esclarecer minha compreensão do terminal aqui.

O terminal é na verdade um dispositivo (teclado + monitor). Quando no modo CLI, a entrada do teclado vai diretamente para o shell e também exibida no monitor.

Enquanto isso, ao usar o modo GUI, você precisa abrir o programa emulador de terminal para interagir com o shell. A entrada do teclado vai para o programa de emulador de terminal e também é exibida na janela do emulador de terminal no monitor. A entrada não vai diretamente para o shell. O programa emulador de terminal retransmitirá a entrada do seu teclado para o shell. O programa de emulador de terminal se comunica com o shell usando pseudo-terminal.

Não há nenhum programa emulador de terminal envolvido quando você vai direto para o CLI a partir da inicialização.

Por favor, comente e me corrija se algo estiver errado com o meu entendimento.

Atualização : Eu li de volta TTY desmistificado . Eu acho que o que eu deveria perguntar é a diferença entre o terminal de texto (boot direto para o modo de texto) e o terminal GUI porque eu pensei terminal = terminal de texto, emulador de terminal = terminal GUI, por exemplo Terminal Gnome, que estão errados. A partir das respostas em relação a antes desta atualização, um usuário está realmente usando o programa emulador de terminal (espaço do usuário) também como no modo GUI. Posso saber que é o programa TTY porque encontrei o processo TTY ao executar o comando 'ps aux'. Eu nunca soube que há emulador de terminal envolvido também (não referindo-se ao emulador de terminal no espaço do kernel) no modo de texto.

Update2 : Eu leio console do Linux . De acordo com ele, o modo de texto é console, enquanto o software de terminal no modo GUI é emulador de terminal. Bem, faz sentido e é o mesmo com o meu entendimento antes. No entanto, segundo o diagrama do TTY desmistificado , o emulador de terminal está no espaço do kernel em vez do espaço do usuário. Curiosamente, o diagrama refere-se ao modo de texto.

    
por Ron Vince 10.01.2016 / 07:41

2 respostas

6

Existem alguns termos separados aqui que precisam ser definidos de forma independente:

Terminal: Uma interface real de teclado / monitor, como o VT100: link

Emulador de terminal (TTY): Emula um terminal, fornecendo entrada e saída. Pressione ctrl + alt + F2 na maioria das distribuições Linux e você estará em um. Digite "w" no terminal e você verá seu comando w sendo executado por um "tty".

Pseudo-Terminal (PTY): Um par mestre / escravo (ptmx) no qual alguma outra parte do software, como o ssh ou um terminal GUI, fornece uma interface semelhante a terminal através de um escravo . link Digite "w" em um terminal GUI e você verá o comando w listado como proveniente de um pts.

Shell : Um interpretador de linha de comando que é executado no login e interpreta sua entrada. Exemplos disso são bash / zsh.

No entanto, tenha em mente que esses termos se tornaram intercambiáveis na conversa. Quando alguém se refere ao "terminal", "emulador de terminal", "console", "linha de comando" ou "shell", a menos que o contexto especifique o contrário, provavelmente eles estão se referindo de forma mais geral a:

"Essa coisa baseada em texto com a qual eu controlo algum computador."

Editar para atualização de pergunta

Veja abaixo todos os processos que correspondem a pts ou pty:

root@localhost tests]# ps fauxww | grep -P [pt]t[ys] 
root      2604  2.3  0.8  50728 34576 tty1     Ss+  07:09   1:15      \_ /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-VRHaoJ/database -nolisten tcp vt1
root      2569  0.0  0.0   2008   500 tty2     Ss+  07:09   0:00 /sbin/mingetty /dev/tty2
root      2571  0.0  0.0   2008   500 tty3     Ss+  07:09   0:00 /sbin/mingetty /dev/tty3
root      2573  0.0  0.0   2008   504 tty4     Ss+  07:09   0:00 /sbin/mingetty /dev/tty4
root      2575  0.0  0.0   2008   500 tty5     Ss+  07:09   0:00 /sbin/mingetty /dev/tty5
root      2577  0.0  0.0   2008   504 tty6     Ss+  07:09   0:00 /sbin/mingetty /dev/tty6
sin       3374  0.2  0.7  90668 28564 ?        Sl   07:13   0:09 /usr/bin/python /usr/bin/terminator   <<< Added this parent of 3377 manually to see the pts source
sin       3377  0.0  0.0   2076   620 ?        S    07:13   0:00  \_ gnome-pty-helper
sin       3378  0.0  0.0   5236  1712 pts/0    Ss   07:13   0:00  \_ /bin/bash
root      4054  0.0  0.0   5124  1676 pts/0    S    07:23   0:00  |       \_ bash
root      5034  0.0  0.0   5056  1092 pts/0    R+   08:03   0:00  |           \_ ps fauxww
root      5035  0.0  0.0   4416   740 pts/0    S+   08:03   0:00  |           \_ grep -P [pt]t[ys]
sin       4154  0.0  0.0   5236  1708 pts/1    Ss   07:23   0:00  \_ /bin/bash
sin       4485  0.0  0.0   7252  3500 pts/1    S+   07:41   0:00      \_ python

Você verá os dois processos relacionados a pts e tty. Você assume que porque você vê tty em ps, esta é a coisa que seu terminal GUI está usando, mas não é. Neste caso, os processos TTY da mingetty são todos os que eu posso usar com ctrl + shift + F2-6, e os pty são escravos relacionados ao processo do terminal da GUI. Para ver com certeza, verifique o lsof do processo do seu terminal GUI:

[root@localhost tests]# ps fauxww | grep terminator
sin       3374  0.2  0.7  90668 28564 ?        Sl   07:13   0:08 /usr/bin/python /usr/bin/terminator
[root@localhost tests]# lsof -p 3374 | grep '[pt]t[ys]'
/usr/bin/ 3374  sin   17u   CHR      136,0      0t0      3 /dev/pts/0
/usr/bin/ 3374  sin   25u   CHR      136,1      0t0      4 /dev/pts/1

Quando você inicializa no modo de texto, você está entrando em um TTY como se pressionasse ctrl + alt + f2 da área de trabalho. Quando você usa terminais SSH / GUI, está usando um pseudo-terminal.

    
por 10.01.2016 / 09:16
2

Um terminal (display) é uma peça de hardware que possui teclado e monitor e se comunica com um computador host. O terminal é em si um pequeno computador; um sistema embarcado.

Um emulador de terminal é um software executado em uma máquina de propósito geral que implementa o comportamento de algum terminal.

Os emuladores de terminal não são todos gráficos. Eles podem ser baseados em um modo de exibição de texto. Um exemplo disso é o console no kernel do Linux.

Os emuladores de terminal também podem usar a emulação de terminal. Um exemplo disso é o programa GNU Screen. Requer um terminal, mas fornece emulação de terminal para programas que estão sendo executados sob ele.

Emuladores de terminal podem ser executados em um computador host para fornecer um terminal virtual para acessar o próprio computador host. O pedaço de software rodando sem o host olha para o mesmo host como um terminal remoto conectado. Mas os emuladores de terminal também podem ser usados para simplesmente usar o computador como um terminal para acessar algum host remoto. Um exemplo disso é, digamos, usar um emulador IBM 3270 em execução no Windows em um PC para acessar um mainframe. É um emulador porque você está usando um software no Windows e não um 3270 na sua mesa. Mas você não está usando isso para acessar a linha de comando do Windows. Outro exemplo deste tipo de emulador de terminal é um pacote de comunicação serial como o Minicom, o Hyper Terminal e assim por diante. Além disso, o popular cliente PuTTY SSH.

    
por 10.01.2016 / 09:07