pressione a tecla não exibida em tty1

0

Eu tenho o servidor LTS do Ubuntu 16.04.04. Eu estava fazendo algum trabalho em tty1 e depois fiz uma pausa para o almoço. Nesse meio tempo, meu monitor de desktop adormeceu. Quando voltei, pressionei Esc e minha tela despertou e eu estava no prompt tty1 , exatamente onde parei. No entanto, quando comecei a digitar, notei que os caracteres que eu inseri não estavam sendo exibidos no prompt. Era como se o teclado não estivesse funcionando, mas pude ver que o texto pré-existente na tela piscaria a cada pressionamento de tecla que eu fazia. Então, eu acho que (A) a conexão do teclado físico não é o problema e (B) as teclas pressionadas estão se registrando em algum lugar por causa do breve piscar de olhos.

Apenas para verificar novamente, pressione Ctrl Alt F2 para ir para tty2 e comecei a digitar (nome de usuário e senha ) e os caracteres que eu estava pressionando no teclado estavam aparecendo como deveriam. Então, meu teclado pareceu funcionar bem em tty2 (e em tty3 , tty4 e assim por diante).

Então, voltei para tty1 e, novamente, as teclas pressionadas não estavam sendo exibidas. Nenhuma combinação de teclas pareceu funcionar em tty1 , exceto que as teclas de função foram para outro terminal.

Como não consegui descobrir como minhas principais impressoras aparecem em tty1 , tentei shutdown , mas não consegui inserir shutdown em tty1 . Então, fui para tty2 e digitei shutdown . Em tty2 , o comando registrou e declarou a hora em que o computador seria desligado. Quando chegou a hora de desligar, uma mensagem foi exibida informando que (não me lembro do texto exato) havia outro processo ocorrendo. Eu tentei Ctrl C fora do desligamento, mas ele estava preso também. Então, eu fui para tty3 e tentei desligar e fiquei preso novamente. Então, eu finalmente pressionei o botão liga / desliga no meu computador por alguns segundos e desliguei meu computador do jeito feio. Quando o computador iniciou o backup, o problema desapareceu e tudo parecia funcionar normalmente.

O que estava acontecendo com as teclas pressionadas não exibindo (mas fazendo a tela piscar) em tty1 ? Ansiosa para entender isso.

    
por Arya 08.04.2018 / 05:14

1 resposta

1

O console baseado em caracteres ( tty1 , tty2 etc.) é um emulador de terminal: imita a operação de um terminal conectado à porta serial, com algumas extensões específicas do Linux. Essa emulação inclui suporte para handshaking XON / XOFF ... e os caracteres usados para esse tipo de handshaking podem ser facilmente produzidos em um teclado, mesmo por acidente.

Se você pressionar Control-S, ele enviará o caractere de controle XOFF, que interromperá a saída para o terminal até que você pressione Control-Q (também conhecido como o caractere XON). Note que a entrada não é realmente interrompida junto com a saída: se você digitar qualquer coisa enquanto o XOFF estiver em efeito, esses caracteres serão emitidos assim que você pressionar Control-Q.

Esse recurso pode ser controlado usando o comando stty , especificamente com os sinalizadores ixon e ixany . Para desativar o recurso completamente, use stty -ixon ; para ativá-lo novamente, use stty ixon . Se você usar stty ixany enquanto o recurso estiver ativado, qualquer tecla retomará a saída; se você usar stty -ixany , somente o Controle-Q poderá ser usado para continuar.

O sinalizador ixoff é para transmissão na direção oposta: se o buffer de entrada do lado do servidor estivesse em risco de ficar saturado, o servidor enviaria um Control-S para o terminal para fazê-lo parar de transmitir até a entrada anterior foi processado. No console Linux, isso obviamente não é muito útil, já que tanto o "servidor" quanto o "terminal" estão compartilhando o mesmo processador físico. Mas o ixon sinalizador ainda é útil, pois você pode usá-lo, por exemplo, pause um texto de rolagem para lê-lo.

O estado padrão para o console Linux parece ser ixon -ixoff -ixany , ou seja, o Control-S pode interromper a saída para o console e somente o Control-Q pode reiniciá-lo.

    
por 08.04.2018 / 11:39