Existem 7 terminais que podem ser usados em nosso sistema. tty7
é baseado em GUI.
Como posso saber qual tty estou usando atualmente?
como, tty1, tty2 .... tty6?
Existem 7 terminais que podem ser usados em nosso sistema. tty7
é baseado em GUI.
Como posso saber qual tty estou usando atualmente?
como, tty1, tty2 .... tty6?
Respostas:
Existem várias maneiras de descobrir isso. Eu iria com o comando who am i
(not who
):
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
Quando estou em um terminal gráfico, ele retorna algo como:
ravexina pts/0 2017-04-10 1:19 (:0)
Na sessão ssh, o uso de um resultado gráfico do terminal é o mesmo, mas em vez de (: 0), receberei o IP da minha máquina (192.168.xx). outros comandos, como w
, who
, pgrep
, ps
, etc são úteis também.
Por exemplo, para descobrir em que tty
minha interface gráfica está sendo executada:
ps $(pgrep Xorg)
Que no meu caso, porque eu não uso nenhum gerenciador de exibição como gdm ou slim, ele produzirá:
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
who am i
não retorne nada e whoami
retorne zanna
((while who
retorna todas as sessões (lembro-me de uma pergunta relacionada (que se mostrou irrespondível)) em que notamos que diferentes emuladores produziram saída diferente who
)).
who am i
sempre funcionará bem em uma vt, e pgrep
é muito inteligente (você pode usar a $()
sintaxe para sub-backticks de comando pode ficar um pouco confuso na remarcação), então sua resposta é muito agradável e quem quer que tenha diminuído sua votação não deveria ter feito isso ...
Use o tty
comando
Se eu estiver certo, esta é a referência:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
pts
significa que você está usando o terminal de GUI ou através de SSH
Vamos dar um passo atrás e começar com a confusão: o que é um tty? Originalmente, tty era uma abreviação de teletipo que se tornou um teletipo de vidro que se tornou qualquer terminal ou a conexão a um, especificamente uma porta serial (ainda existem, geralmente / dev / ttyS0, / dev / ttyUSB0 e às vezes / dev / ttyacm0). Então você tem pseudo-ttys e virtual ttys. mãos unix antigas estão familiarizadas com os pseudo-ttys, usados para terminais remotos (ssh e telnet), terminais virtuais (xterm e similares) e multiplexadores de terminal (screen e tmux). Os pseudo-ttys tiveram vários esquemas de nomeação ao longo do tempo, mas o atual usa nomes como / dev / pts / 0. Os ttys virtuais, por outro lado, estão associados aos consoles virtuais, especificamente quando você usa as teclas de função alt de controle, está alternando os consoles virtuais, cada um dos quais emparelhado com um tty virtual.
Portanto, se você precisar encontrar seu pseudo tty (ou virtual tty ao usar o modo de texto), existem todos os tipos de soluções who am i
ou ps ax|grep $$
isso é relativamente fácil de fazer, pois existem várias maneiras de descobrir isso, pois o pseudo tty é aberto no io padrão na maioria dos casos e existem outros métodos que funcionam mesmo quando o io é redirecionado. isso também tem a vantagem de fazer a coisa certa ao usar portas seriais e ttys virtuais, desde que você não esteja usando emuladores de terminais gráficos ou multiplexadores de terminal.
Mas e se você quiser identificar o console virtual? sudo fgconsole
pode ser útil para casos interativos. Ou o que faço é apenas andar pelos consoles, pois a troca geralmente é rápida o suficiente. Não conheço um método programático que funcione de maneira confiável em casos não interativos ou não de primeiro plano.
Vejamos um exemplo que garante que nunca será capaz de responder com segurança ao console virtual. O computador em que estou sentado na frente de (alpha) possui um Xserver rodando em tty2 (: 1), tenho três janelas abertas, dois xterms e um vncviewer (conectado ao bravo: 2). Um xterm está executando a tela, o outro está executando o ssh charley. A tela tem duas janelas abertas, ssh delta e quem (que identifica corretamente o pseudo tty na coluna dois e fornece a dica (:1:S0)
na coluna cinco que nos diz que o pseudo tty está conectado à primeira sessão de tela conectada ao segundo servidor X, mas não fornece nenhuma informação do console virtual). Executar quem, em qualquer uma das sessões ssh, dá a dica(alpha)
que identifica a máquina da qual a sessão ssh veio, comparativamente boa para sessões remotas. Embora exista pouca informação sobre o que está conectado ao pseudo-tty (e absolutamente nenhum console virtual ou mesmo informações sobre o tty remoto estejam disponíveis), pelo menos o host remoto é identificado. as informações sobre a tela podem estar erradas, pois as sessões de tela são destacáveis e o vnc não fornece nenhuma informação útil, pois a única diferença entre uma sessão do vnc e uma sessão local é o número de exibição. Em muitos casos, você pode assumir que: 0 está no tty7, mas nem sempre, e nunca no meu, pois o bravo não possui uma placa de vídeo e: 0 é uma sessão vnc (que confunde quem, porque pensa que é o console local) e nenhuma das máquinas usa o tty7 como uma sessão gráfica, porque eu (não apenas pelo contrário) despejo os logs no tty7 (e no tty5, tty6 e tty8 também) religando sessões gráficas em outros lugares. Mas a tela de espera também pode atuar como um programa de terminal, permitindo que você estabeleça uma sessão através de um cabo serial. O que essa sessão informa quando quem é executado? Por que nada além da porta serial, seja através de vnc, xterm, ssh, tela e um adaptador serial usb de uma só vez ou está conectado ao meu televideo.
Quando você faz login em um tty, ele mostra qual tty você está usando na primeira linha automaticamente.
Se pressionar a combinação de teclado Ctrl+ Alt+ F3mostrar apenas uma tela preta, como você escreveu em um comentário, existe uma maneira alternativa de obter acesso a um shell raiz ao inicializar o computador sem pressionar Ctrl+ Alt+ F3para exibir um tty.
Imediatamente após a tela inicial do BIOS / UEFI durante a inicialização, com o BIOS, pressione e segure rapidamente a Shifttecla, que exibirá o menu GNU GRUB. (Se você vir o logotipo do Ubuntu, perdeu o ponto em que pode entrar no menu GRUB.) Com UEFI, pressione (talvez várias vezes) a Esctecla para acessar o menu GRUB. Às vezes, a tela inicial do fabricante faz parte do carregador de inicialização do Windows; portanto, quando você liga a máquina, ela é direcionada diretamente para a tela do GRUB e, em seguida, pressionar Shifté desnecessário.
Na primeira tela roxa do GNU GRUB, selecione Opções avançadas para Ubuntu com as teclas ↑ e ↓ e pressione Enter. Você será solicitado por outro menu roxo do GNU GRUB que contém uma lista de opções do kernel.
Pressione a tecla de seta para baixo até selecionar a segunda entrada da parte superior (aquela com o modo de recuperação na descrição) e pressione Enter.
Agora você deve ver este menu de recuperação:
Usando as teclas de seta, role para baixo até a raiz e pressione Enter.
Agora você deve ver um prompt raiz, algo como isto:
root@ubuntu:~#
Nesta fase, você deve ter um sistema de arquivos somente leitura. Você precisa remontar com permissões de gravação:
mount -o rw,remount /
Agora você pode executar comandos da mesma forma que em um terminal.
Eu acho que você está cuidando de algo mais do que as outras respostas fornecidas. Corra sudo fgconsole
para descobrir qual realty está ativo agora.
Use o comando tty, ele funciona no Linux e no macOS e fornece uma saída bastante simples de ler, apenas o nome do tty em que você está.
Exemplo:
$ tty
/dev/pts/0
É fácil criar um script ou incluí-lo no prompt, exemplo:
$ PS1='`tty`: '
/dev/pts/0: _
Dessa forma, você sempre saberá em qual terminal está.