Todas as entradas /dev/tty*
são algo conhecido como device file
, de acordo com a filosofia Unix. Eles servem como um link entre o usuário e o dispositivo real, mas sua finalidade pode ser um pouco diferente.
Consoles virtuais
Arquivos de dispositivos como /dev/tty123
podem ser usados para interagir com o sistema via shell comum. Esses são terminais virtuais. O sistema Ubuntu está configurado para abrir por padrão TTY 1 a 6, mas pode-se abrir manualmente mais, por exemplo:
sudo openvt -c 9 -s "bash"
Isso abrirá bash
como root em / dev / tty9 e mudará imediatamente para esse TTY. Para fazer o mesmo sem sudo
como non-root, você terá que alterar a propriedade de tty que deseja abrir. Por exemplo,
$ sudo chown xieerqi:tty /dev/tty8
$ openvt -c 8 -l
Isso me logaria com meu shell padrão no tty8. Em meus testes, no entanto, parece que isso funciona apenas via TTY, então se você estiver fazendo isso via emulador de terminal, isso pode não funcionar (eu estava recebendo Couldn't get a file descriptor referring to the console
error e somente sudo openvt -c 8 -l
funcionou para mim do emulador)
Do ponto de vista histórico, antes de todos os multiplexadores de terminais sofisticados terem sido criados, esse era um recurso útil - você poderia gerar até 62 comandos (talvez servidores) nesses consoles e deixá-los rodar, enquanto trabalhava na 63ª. Hoje em dia, pode não ser tão necessário.
Existem vários arquivos de dispositivos criados por padrão. As ativas são de 1 a 6, mas é possível alterar o número editando /etc/default/console-setup
, especificamente esta parte:
# Setup these consoles. Most people do not need to change this.
ACTIVE_CONSOLES="/dev/tty[1-6]"
dispositivos ttyS *
Estes são arquivos de dispositivos usados para consoles seriais, também conhecidos como RS-232. No passado, muitos sistemas de computadores vinham com porta serial. Hoje em dia, isso pode ser encontrado principalmente no tipo de servidor de computadores. Vários dispositivos ttyS podem ser úteis com hubs RS-232, que permitem conectar vários dispositivos a serem gerenciados via USB ou Ethernet.
Para engenheiros elétricos (que é o que eu estou estudando na faculdade), nós usamos porta serial para interagir com microcontroladores e placas de desenvolvimento (Arduino, por exemplo). Computadores de porta única, como o Raspberry Pi, também o utilizam. Hoje em dia, a conexão serial é estabelecida usando o cabo USB para UART, e abrindo o console no terminal via screen
da seguinte forma:
screen /dev/ttyUSB0 115200 # the number is baud rate or speed
Note que o Arduino e o Raspberry criarão seu próprio arquivo de dispositivo para conexão serial, /dev/ttyUSB0
ou /dev/ttyACM0
dispositivos vcs *
De acordo com man vcs
, esses são dispositivos de memória do console. Em palavras simples, se você fizer sudo cat /dev/vcs1
, verá o que está na tela em /dev/tty1
, pelo menos até a quantidade máxima de linhas nesse terminal.
Diminuindo o número de consoles
Diminuir o número de arquivos de dispositivos reais, não é possível sem alterar a biblioteca tty.h
e recompilar o kernel ( Referência e outro ). No entanto, a exclusão desses dispositivos pode ser feita manualmente por meio deste comando:
sudo bash -c 'for num in $(seq 10 63 ) ; do MAKEDEV -v -d "tty$num" ; done'
Isso, no entanto, é um tanto inútil - os arquivos do dispositivo não ocupam espaço e não influenciam o desempenho do sistema.