Por que o UNIX / Linux fornece vários terminais?

8

Nos anos 70, tínhamos terminal de hardware com interface CUI (interface de usuário de caractere) para entrada / saída.

Agora, temos emuladores de terminal ( Ctrl + Alt + Fn ) no mundo Unix / Linux.

No sistema operacional Ubuntu, vejo sete emuladores de terminal, onde a GUI ocupa o sétimo emulador de terminal ( Ctrl + Alt + F7 ). / p>

Por exemplo, este é meu primeiro terminal ( Ctrl + Alt + F1 ) emulador

$ tty
/dev/tty0

Por que o Unix / Linux fornece vários emuladores de terminal?

    
por overexchange 08.04.2017 / 20:46

5 respostas

24

Why does UNIX/Linux provide multiple terminal emulators [on the console]?

Pela mesma razão, o seu emulador de terminal GUI provavelmente suporta abas (por exemplo, o Terminal GNOME), e se não (por exemplo, rxvt ) , pela mesma razão, o lançamento de uma segunda instância de aplicativo do terminal GUI não apenas puxa o primeiro para o primeiro plano e sai, forçando você a usar a primeira instância.

Eu uso rotineiramente pelo menos 3 janelas de terminal no meu trabalho e, com frequência, mais:

  1. Editor de texto para o lado do servidor do sistema em que estou trabalhando

  2. Editor de texto para o lado do cliente do mesmo sistema

  3. Janela de comando para executar o servidor

Eu raramente preciso de um quarto terminal para executar o programa cliente, pois ele geralmente é executado em outro lugar (aplicativo da web, aplicativo de GUI nativo, aplicativo móvel etc.), mas se eu estivesse desenvolvendo um cliente CLI para meu aplicativo de servidor, d tem um terminal separado aberto para isso também.

No passado, antes de o sudo se tornar popular, mantive um terminal root aberto o tempo todo.

Eu raramente uso caixas Unix / Linux de forma interativa no console sem uma GUI atualmente, mas eu geralmente as executo sem cabeça e as acesso através de SSH. Meu cliente de terminal SSH suporta guias, configuradas como acima.

Um dos meus projetos atuais de hobby me faz usar um verdadeiro antigo terminal de vidro ocasionalmente, o que significa que eu não tenho mais múltiplas janelas de terminal, então estou finalmente aprendendo um pouco sobre GNU screen , um programa para o qual eu nunca tive muita utilidade, pois tinha vários terminais de console ou vários terminais GUI. E o que faz screen ? Entre outras coisas, você pode configurá-lo para dar-lhe vários terminais virtuais em uma única tela, assim como o Linux faz com Ctrl - Alt - F x .

    
por 08.04.2017 / 20:58
17

Este é um recurso fornecido por quase todos, se não todos, Unix e Unix, como se fosse executado em hardware x86. Curiosamente, os consoles virtuais foram introduzidos pela primeira vez em um Unix pela Microsoft Xenix no início dos anos 80, e também estavam disponíveis em CP / M simultânea.

Este recurso foi posteriormente integrado ao AT & SVR4 Unix, Solaris e emprestado pelo BSDs e pelo Linux.

Why does UNIX/Linux provide multiple terminal emulators?

Quando foram introduzidos pela primeira vez, não havia ambiente gráfico disponível para as máquinas que executavam essas implementações do Unix. Embora ter um terminal físico conectado a um servidor Unix central por meio de linhas RS232 fosse o padrão, a conexão de múltiplos terminais a um PC padrão executando o Xenix era excessiva se o objetivo fosse apenas para um único usuário executar vários programas interativos simultaneamente. Terminais virtuais forneceram uma solução elegante e conveniente para esse problema.

Outras implementações do Unix forneceram posteriormente o mesmo recurso para atender à mesma necessidade.

Quando os ambientes gráficos, especialmente o X11, se espalham, a capacidade de ver vários emuladores de terminal ao mesmo tempo na mesma tela foi uma melhoria significativa. O recurso do console virtual, no entanto, era geralmente mantido apenas porque ainda era conveniente poder mudar para um console se o ambiente gráfico estivesse congelado ou disfuncional por algum motivo.

Observe que utilitários como screen e tmux vieram muito depois dos terminais virtuais para generalizar a mesma funcionalidade. Sua vantagem é que eles podem ser usados não apenas no console físico local, mas também em qualquer sessão, local ou remota (por exemplo, telnet , ssh ). Quando usados no console físico, os consoles virtuais ainda são úteis, pois são funcionais em algumas situações em que screen / tmux não pode ajudar, como se o X11 estivesse congelado ou se uma janela capturasse o foco e não o fizesse solte-o.

A virtualização baseada em contêineres, como as zonas do Solaris ou o Linux LXC, também fornece um método para se conectar ao console do contêiner por meio de zlogin -C zone e lxc-console -t 0 -n container , respectivamente.

    
por 08.04.2017 / 22:22
4
Suponho que uma boa razão para ter emuladores de terminal extra é que, se você fizer algo errado em sua interface gráfica e se tornar inutilizável, poderá alternar rapidamente para um emulador de terminal e corrigir todos os problemas que você está tendo na interface gráfica. Isso realmente acontece com bastante frequência quando você está fazendo alterações no gerenciador de janelas ou em outros recursos da interface gráfica. Eu suponho que também seria útil ter mais alguns terminais, no entanto ter 6 overtop da interface gráfica principal parece um pouco excessivo.

Também me corrija se eu estiver errado, mas não é possível executar vários comandos como usuários diferentes de um único emulador de terminal?

    
por 08.04.2017 / 21:17
3

Muitas das outras perguntas parecem responder por que o recurso foi apresentado.

Ainda assim, a pergunta atual é:

Why does Unix/Linux provide multiple terminal emulators?

"faz", não "fez".

Então, com foco no horário atual, aqui estão algumas razões atuais:

  • Eles podem ser úteis. Às vezes, em vez de criar uma nova janela que cubra outras janelas da área de trabalho, posso simplesmente virar para outro terminal. Então, eu posso mudar de volta, então a área de trabalho é o primeiro plano. Ocasionalmente (normalmente quando há várias janelas abertas) isso pode ser mais conveniente do que colocar uma janela de terminal em segundo plano e, depois, tentar fazer com que a mesma janela chegue ao primeiro plano (em vez de acidentalmente selecionar uma diferente do terminal janelas que estão na área de trabalho gráfica).

    Por exemplo, posso lembrar que o Alt-Ctrl-F2 é o editor de texto que examina um arquivo de texto (por exemplo, documentação), e o Alt-Ctrl-F3 é usado para examinar rapidamente outro arquivo (por exemplo, um arquivo de configuração). e Alt-Ctrl-F4 é usado para um prompt de comando, enquanto a área de trabalho gráfica pode ser dividida entre navegação na web, e-mail, music player, etc.
  • As janelas do terminal podem ser úteis para trabalhar com o computador se houver algum tipo de problema com a exibição gráfica. Para pessoas que podem ter uma necessidade atual de usar um computador (talvez personalizado) que não tenha uma placa de vídeo gráfica, essa funcionalidade pode ser essencial. Há também a possibilidade de necessidades futuras (possivelmente com um sistema operacional sucessor / descendente) que podem ser adicionais às necessidades atuais.
    • Esses terminais de texto tendem a usar menos recursos. Por exemplo, eles tendem a usar menos memória em uma placa gráfica. Portanto, se uma placa gráfica tiver um mau funcionamento físico que rompe a funcionalidade do 3º e 4º megabyte de memória de vídeo, isso pode até não afetar alguém que esteja usando apenas os terminais de texto clássicos. Processos mais simples, que usam menos recursos, podem ser úteis ao trabalhar na execução da recuperação.
  • O código já existe. Portanto, apoiá-los é fácil.
  • A quantidade de recursos para um terminal não utilizado (antes de efetuar login) é muito pequena. Mesmo essa pequena quantidade de memória pode ser re-reivindicada ajustando o / etc / ttys
  • O código para suportar vários terminais é bastante semelhante ao código para suportar E / S em conexões seriais. Desenvolvedores de sistemas operacionais tendiam a valorizar muito isso. Com os avanços nas máquinas virtuais, o valor do uso de conexões seriais é menos crítico do que costumava ser. Ainda assim, alguns desenvolvedores do kernel (já familiarizados com o processo) podem gostar de usar tal hardware. Organizações que usam hardware antigo também podem se beneficiar ao não precisar alterar o hardware.

Em resumo, não há muita razão para não apoiar isso. Há algum benefício que algumas pessoas apreciam, pelo menos algumas vezes, e não há muito custo.

Na verdade, remover o suporte para isso pode ser mais trabalho do que simplesmente deixar o suporte lá. Embora a remoção de suporte provavelmente seja simples, se alguma coisa quebrar, identificar e corrigir o problema pode ser um pouco desafiador. Portanto, a redução na quantidade de esforço necessária (para desenvolver a próxima versão de um sistema operacional) é outro motivo para deixar as coisas como estão. Isso significa que esse recurso está propenso a permanecer disponível.

    
por 10.04.2017 / 08:16
2

Primeiro do que você perguntou é uma característica de um kernel chamado Linux. Não do Unix em geral, e não do Gnu.

Quanto ao porquê, você teria que perguntar aos autores. No entanto, meu palpite é que ele permite que um administrador de um dispositivo sem rede (aqui eu incluo um RS232 como um tipo de rede), faça o login e faça algum trabalho administrativo, sem desconectar outro usuário.

    
por 08.04.2017 / 21:03