Terminal no Linux: Guia completo para Iniciantes

Compartilhe:

Estudante usando terminal linux do computador

Se você está começando agora no mundo Linux, provavelmente já se deparou com termo “terminal”, não é mesmo ?

E entender o que é o terminal no linux é o primeiro passo para começar a dominar o sistema operacional como um profissional.

Também deve ter ouvido sobre “terminal virtual” e “console virtual“, embora muitas vezes pareçam sinônimos, eles possuem papéis distintos na arquitetura do sistema.

Este post vai explicar o que é terminal no linux, ensinar os conceitos de console virtual e terminal virtual no linux, também vai explicar o que é TTY e Pseudo-Terminal no sistema.

O que é um Terminal ?

Terminal é um dispositivo físico usado para interagir com um computador. Mas para entender o conceito de terminal no Linux, é preciso entender um pouco da história dos computadores.

Especialmente entre as décadas de 1960 e 1980 computadores eram muito caros, por essa razão as empresas usavam computadores gigantes chamados mainframes.

Um mainframe permite que vários usuários se conectem a ele separadamente, cada usuário acessava o computador mainframe como se fosse um computador independente.

é mostrado uma pessoa usando um terminal físico que está conectado a um mainframe
Imagem gerada por IA: mainframe sendo acessado por funcionários através de terminais físicos

Os funcionários das empresas utilizavam terminais físicos para acessar e usar o computador central (mainframe).

Especialmente na década de 1960 era usado um tipo de terminal físico chamado Teletype (TTY). O TTY não tinha tela, sendo composto pelo teclado e um dispositivo de impressão e se conectava aos mainframes por uma conexão serial.

Terminal Teletype(TTY) físico em cima de uma mesa em uma salaque tem mainframes.
Imagem gerada por IA: Terminal Teletype (TTY)

Como os mainframes não tinham um hardware para exibição próprio, todo o código e texto era impresso no papel pelo TTY.

Mas no início da década de 1970 os teletypes (TTY), foram sendo substituídos pelos terminais físicos com tela integrada.

Um terminal físico com tela é um equipamento composto por um monitor, um teclado integrado e alguns outros componentes necessários para a conexão com o mainframe.

Imagem de um Terminal Físico em cima de uma mesa, com códigos exibidos na tela
Imagem gerada por IA: Terminal Físico com Tela

Diferentemente de um computador pessoal, o terminal físico não possuia CPU, memória RAM, placa-mãe ou disco rígido e se conectava ao mainframe através da portal serial ou um cabo coaxial.

Outro equipamento usado é o console físico, que era utilizado pelos administradores para gerenciar os mainframes.

Os consoles ficavam fisicamente ao lado do mainframe, dentro do data center. Esse equipamento tinha luzes de status e chaves físicas em um painel para funções de baixo nível.

Homem operando um console físico que está conectado a um mainframe
Imagem gerada por IA: Console Físico

Enquanto os terminais físicos eram ferramentas de trabalho dos usuários para interagir com as aplicações do mainframe, os consoles físicos eram usados como um “centro de comandos” do mainframe com privilégios para administra-lo.

Com o tempo, a tecnologia evoluiu e o preço dos computadores diminuiu, levando empresas a migrarem para servidores e estações de trabalho(computadores usado por usuários).

Embora os terminais físicos sejam hoje parte da história, o conceito de terminais ainda existe no linux.

Ainda é usado terminal no linux ?

Na atualidade a interação com o computador mudou, não são mais usados os antigos terminais físicos, o hardware é integrado ao computador pessoal ou servidor, mas acredite, existe sim um terminal emulado pelo kernel linux, que usa o teclado e tela do computador.

Para usar um terminal no linux pode-se acessar consoles virtuais. No linux, um Console Virtual (VC) é a interface de texto gerada pelo kernel e utilizada para o usuário acessar e usar o sistema independentemente se existe ou não uma interface gráfica.

Ao acessar um console virtual no linux é exibido um prompt para autenticação do usuário. Esse prompt de login é gerado por um processo chamado getty ou agetty que é executado no espaço do usuário.

Os consoles virtuais no linux atuam como “terminais físicos” independentes, permitindo executar várias sessões simultaneamente no mesmo computador que tem o linux instalado.

O propósito é permitir que múltiplos usuários acessem e usem o computador/servidor ao mesmo tempo.

A maioria das distribuições linux usam 6 à 7 consoles virtuais. Para acessar cada console virtual no linux pode-se usar uma combinação de teclas, geralmente é Ctrl + Alt + F1 até F7.

A tabela a seguir tem os atalhos para acessar os consoles virtuais:

Console Virtual (TTY)Atalhos no linux com interface gráficaAtalhos no linux sem interface gráfica
1 (tty1)Ctrl + Alt + F1Alt + F1
2 (tty2)Ctrl + Alt + F2Alt + F2
3 (tty3)Ctrl + Alt + F3Alt + F3
4 (tty4)Ctrl + Alt + F4Alt + F4
5 (tty5)Ctrl + Alt + F5Alt + F5
6 (tty6)Ctrl + Alt + F6Alt + F6
7 (tty7)Ctrl + Alt + F7Alt + F7

Caso o computador tenha interface gráfica, ao usar uma das combinações de teclas, pode se deparar com a tela de login gráfica (EX: GDM), isso acontece por que as interfaces gráficas rodam em cima de consoles virtuais.

É possível também alternar entre os consoles virtuais, usando o comando chvt. A partir de um console virtual execute o chvt seguido do número do console virtual a ser acessado, veja os exemplos:

Também existem os emuladores de terminal, que são programas executados no espaço do usuário, como: gnome-terminalKonsole ou xterm, esses programas não são consoles virtuais, eles rodam dentro de uma interface gráfica e utilizam pseudo-terminais.

O que é um TTY no linux ?

Já foi explicado neste post que o teletype (TTY) era um terminal físico usado para se conectar ao mainframe. O linux ainda usa um TTY, mas não é físico e sim virtual.

No linux quase tudo é arquivo, então o kernel linux emula o TTY (teletype) através de arquivos do tipo caractere (TTY virtuais), por exemplo: /dev/tty1, /dev/tty2, /dev/tty3.

E cada arquivo TTY representa um terminal, para entrada e saída de informação, controlando os processos iniciados na sessão após uma autenticação bem-sucedida.

Se fechar a conexão com o TTY (terminal), por exemplo, encerrando a sessão os processos iniciados no terminal são encerrados.

Após acessar o console virtual e se autenticar, execute o comando tty:

O comando tty vai exibir na tela o nome do arquivo de dispositivo do terminal conectado à entrada padrão (teclado).

A saída será algo como: /dev/ttyN, onde “N” é um número, por exemplo: /dev/tty4 ou /dev/tty5 ou /dev/tty6, vai depender do console virtual que está acessando. No linux, cada console virtual está associado a um arquivo de dispositivo TTY.

A seguir tem um exemplo de como o TTY é usado na comunicação do sistema.

1. Acesso ao console virtual 1 (tty1): Ctrl + Alt + F1

2. O Kernel reserva o arquivo /dev/tty1 para representar o terminal físico com teclado e o monitor físicos.

3. O processo de login (getty) abre o /dev/tty1 e após autenticação bem-sucedida inicia o shell bash e o “anexa” diretamente no tty1.

4. Fluxo de entrada (digitação do comando):

4.1. O comando ls é digitado no teclado físico conectado ao computador e a tecla ENTER pressionada.

4.2. O Driver do Kernel captura os sinais elétricos do teclado e os traduz em caracteres para o arquivo /dev/tty1.

4.3. O shell bash lê o ls diretamente do /dev/tty1 como se fosse um arquivo de entrada e executa o comando.

5. Fluxo de saída (Informação exibida na tela):

5.1. O shell bash responde escrevendo a saída do comando ls com a lista de arquivos no /dev/tty1.

5.2. O driver de vídeo do kernel linux pega (do tty1) a saída do comando ls e o desenha diretamente no seu monitor.

Por que console virtual é chamado de terminal virtual no Linux ?

O kernel linux tem um subsistema chamado Terminal Virtual (VT) que é a camada de software que emula o comportamento de um antigo terminal físico (como o VT100).

O VT atua como uma “ponte” para traduzir através dos drivers do kernel linux as entradas de hardware (teclado) e exibir as saídas (tela) para o usuário.

Os consoles virtuais são implementados através do subsistema de terminal virtual. Por exemplo, quando a combinação de teclas Ctrl + Alt + F5 é usada, o console virtual (tty5) é acessado e ele está utilizando o terminal virtual para você acessar o kernel linux.

Por isso que o termo terminal virtual é usado muitas vezes como sinônimo de console virtual.

Entendendo o Pseudo-Terminal (PTY)

Um pseudo-terminal (PTY) no linux é um par de dispositivos de caracteres virtuais que fornecem um canal de comunicação bidirecional. Uma extremidade do canal é chamada de mestre e a outra extremidade é chamada de escravo.

O PTY é usado para conexões remotas (ssh) ou por programas da interface gráfica, como os emuladores de terminal (Exemplo: konsole do KDE).

O dispositivo slave do Pseudo-Terminal é representado por arquivos na localização /dev/pts, por exemplo: /dev/pts/0/dev/pts/1, e assim por diante. Veja a seguir saída do comando tty no emulador de terminal do ubuntu.

Veja a seguir dois exemplos para entender o funcionamento PTY:

Exemplo 1: você está acessando um servidor via SSH:

1. No cliente você executa o comando ssh [email protected] para se conectar ao servidor (10.10.30.244) e se autentica com sucesso.

2. No Servidor o serviço SSH abre o lado Mestre.

3. O Sistema (no servidor) cria o pseudo-terminal /dev/pts/1 automaticamente no lado Escravo.

4. O shell bash (no servidor) é iniciado e “vinculado” no lado Escravo.

5. O Fluxo: No cliente você digita o comando ls e pressiona a tecla ENTER.

5.1. O texto viaja pela internet e chega no serviço SSH do servidor.

5.2. O SSH escreve ls no lado Mestre.

5.3. O shell bash (no servidor), que está no lado Escravo, recebe o ls através do /dev/pts/1 como se alguém tivesse digitado ali fisicamente no servidor.

5.4. O shell bash (no servidor) executa o ls e ao receber o resultado, responde com a lista de arquivos no lado Escravo.

5.5. O SSH recebe no lado mestre, e a resposta viaja a internet e é recebida no computador cliente, que exibe na tela o resultado.

Exemplo 2: você abre o gnome-terminal no seu notebook e executa o comando cat file1.txt.

1. No seu PC: Você abre o programa que emula terminal chamado gnome-terminal (a janela gráfica).

2. O programa gnome-terminal: abre o lado Mestre.

3. O Sistema: Cria o pseudo-terminal /dev/pts/3 automaticamente no lado Escravo.

4. O shell bash: É iniciado pelo Gnome-terminal e “vinculado” no lado Escravo.

5. O Fluxo:

5.1 Você digita cat file1.txt pressiona a tecla ENTER no seu teclado físico.

5.2 O gnome-terminal captura as teclas e as escreve no lado Mestre.

5.3 O shell bash, que está no lado Escravo, recebe o “cat file1.txt” através do /dev/pts/3 como se alguém tivesse digitado em um terminal físico.

5.4 O shell bash executa o comando e responde enviando a saída do comando cat no lado escravo.

5.5 O Mestre (gnome-terminal) recebe a resposta e a exibe na tela, no caso exibe o conteúdo do arquivo file1.txt para você ver.

Para cada aba que abrir em um programa gráfico que emula terminal será criado um Pseudo-Terminal (PTY) pelo kernel linux.

Tópicos relacionados

Aprender sobre terminal no linux é somente o começo, após se autenticar a partir do console virtual, é necessário saber usar o shell e interagir com o sistema usando comandos linux.

Para aprender mais sobre comandos linux e o shell bash, recomendo a leitura dos guias a seguir:

Shell Bash no Linux: Tudo o que você precisa saber
Recursos do bash essenciais para profissionais de ti
comandos linux: guia para iniciantes
Variáveis de ambiente no linux
Histórico de comandos do bash

Conclusão

Durante este guia foi explicado o que são terminais e como acessar o terminal no linux. Aprendeu o conceito de consoles virtuais e por que eles são chamados de terminais virtuais.

Também foi detalhado o que é TTY no linux e pseudo-terminal (PTY) com exemplos que detalham diferenças entre ambos.

Pode parecer algo simples, mas entender esses conceitos permite que você, por exemplo, consiga usar o sistema e até recuperar diante de falhas gráficas alternando para outros terminais.

Gostou do conteúdo ou tem dúvidas ? Deixe seu comentário abaixo.

Perguntas Frequentes (FAQ) sobre o Terminais no Linux

O terminal virtual é um programa que posso desinstalar ?

Não. Por ser um subsistema do Kernel Linux, ele faz parte do núcleo do sistema. Você pode desinstalar emuladores (como o GNOME Terminal), mas o suporte a TTY no kernel é permanente.

Qual a diferença entre Terminal e Shell ?

Terminal no linux é a interface de texto que você usa para interagir com o sistema, já o Shell é o programa (como o Bash) que interpreta o que você digitou e executa os comandos.

O que acontece se o subsistema de Terminal Virtual do kernel falhar ?

Como ele é parte do kernel, uma falha nesse subsistema geralmente resulta em um Kernel Panic, e o sistema precisará ser reiniciado.

O que acontece se eu fechar um terminal com um processo rodando ?

Na maioria das vezes, o processo recebe um sinal de “SIGHUP” e é encerrado. A não ser que use ferramentas como nohup ou screen.

Posso aumentar o número de consoles virtuais (TTYs) ?

Sim. Embora o padrão seja 6, as configurações do sistema (distros modernas usam o systemd) permitem criar mais instâncias de consoles virtuais.

Navegue por tópicos:

Foto de Edson Oliveira
Edson Oliveira

Especialista em Linux, trabalhando com TI tem experiência no gerenciamento, solução de problemas e suporte de servidores linux em ambientes corporativos.

Professor de cursos voltados a linux, tecnologias open source e certificações LPI. Possui as certificações LPIC-1, LPIC-2 e LPIC-3 (Mixed Environment).

Navegue por tópicos:

Você também pode gostar:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Valorizamos sua privacidade

Utilizamos cookies para aprimorar sua experiência de navegação, exibir anúncios ou conteúdo personalizado e analisar nosso tráfego. Ao clicar no botão “Aceitar todos”, você concorda com nosso uso de cookies.

Para mais informações leia nossa Política de Privacidade.