Você pode desativar a tecla Ctrl-S (XOFF) no Putty?


41

Faço muitas sessões de ssh e periodicamente pressiono Ctrl+ S, que naturalmente envia um XOFFe causa todos os tipos de problemas (sem mencionar que leva um tempo para eu descobrir o que aconteceu, depois outro para lembrar que preciso pressionar Ctrl+ Qpara recuperar.

Prefiro instruir Putty a nunca me deixar digitar XOFF.

Alguma ideia?


6
+1 para apontar que a recuperação é possível com Ctrl + Q. Me ajudou muito!
Demento

11
+1 por perguntar como desativar esse comportamento porque é completamente antiquado e inútil para meus propósitos. Todo mundo na web tem o truque CTRL + q documentado, mas ninguém documentou como desvincular completamente as chaves.
22640 Andrew Andrew

11
lembre-se de que ctrl+qrestaurará o fluxo em cache. Isso significa que, se você pressionar ctrl+se depois enlouquecer, ctrl+cou qualquer outra coisa, quando você pressionar ctrl+qtudo o que você pressionou antes será reproduzido.
Gcb 17/04

Qual é o efeito de um XOFF?
Snowcrash

Respostas:


35

Você não conhece Putty, mas pode usar:

stty -ixon

no host remoto, para desativar os sinais START / STOP.


Obrigado - alguma idéia se ou como isso afeta o console? Isso alteraria o comportamento dos programas shell? (A única coisa que sei sobre o XON / XOFF é que ele é usado para controle de fluxo serial). Parece uma boa configuração para .bash_profile.
Seth

Isso deveria ser stty -ixon.
Oddthinking

Desculpe. Atualizei minha postagem para corrigir o erro de digitação.
Bartosz 22/02

11
Como acabei de comentar ao BlakBat em sua resposta , isso ^Snão envia um XOFF, mas agora me coloca no i-searchmodo. Existe uma maneira de obter o bash (ou PuTTY) apenas para descartar algum ^S? Ainda melhor seria se ele poderia emitir um sinal sonoro e / ou piscar para mim; o)
Owen Blacker

11
Eu adicionei stty -ixonaos meus scripts de perfil. Eu li cerca de 100 artigos sobre como quando você pressiona CTRL + s por acidente, tudo o que você precisa fazer é CTRL + q para continuar novamente ... mas não quero que meu shell intercepte CTRL + s / q desde que eu os uso com o vim bastante. Muito obrigado por fornecer uma resposta que ninguém mais parece considerar.
andrew

29

A solução PuTTY:

  1. antes de criar a sessão, vá para Conexão-> SSH-> TTY na lista.
  2. na caixa suspensa "Modo", selecione IXON (nb: a partir da versão 0.60, esta lista não está em ordem alfabética)
  3. coloque "0" ( zero ) como o valor de IXON .

Captura de tela

Funciona como um encanto, mesmo se você abrir uma "tela GNU" em cima dela, SSH para outro host ou "su" para outro usuário

Se você estiver usando o GNU Bash, o ctrl-S deve permitir agora fazer um histórico de pesquisa direta (também conhecido como i-search)

Você pode ver a diferença na saída de "stty -a | grep -o" .ixon " : Com o putty configurado, ele imprime " -ixon " , sem " ixon "


2
Ok, isso ^Snão envia um XOFF, mas agora me coloca no i-searchmodo. Existe uma maneira de obter o PuTTY (ou o bash) apenas para descartar algum ^S? Ainda melhor seria se ele poderia emitir um sinal sonoro e / ou piscar para mim; o)
Owen Blacker

Para desativar uma ação, você pode vincular ^ S a nada via bind '"\ Cs"'. Isso faz meu PuTTY piscar porque a ação não está mapeada.
precisa saber é o seguinte

11
Eu cansei de massa 0,62 e a configuração acima não ajuda. Tentei substituir XON, XOFF e com valores diferentes, mas nada mudou.
Dennis C

11
Isso também funciona para sessões SSH aninhados, usando OpenSSH como a 2ª, 3ª (etc) cliente
Felipe Alvarez

11
A votação desta resposta é a melhor maneira de desativar o controle de fluxo de software. Para controlar o comportamento do terminal, o emulador de terminal é o melhor local para configurá-lo. Desabilitar o controle de fluxo XON / XOFF em Putty significa que, quando um pseudo-terminal é solicitado a um host remoto, os servidores SSH respeitam essa configuração ao alocar o pseudo-terminal. Veja tools.ietf.org/html/rfc4254#section-6.2
Anthony G - justice para Monica

5
Exemplo .bashrc:
#
# Pare o Putty de executar XOFF / XON com Ctrl-S / Ctrl-Q
# FONTE: http://raamdev.com/recovering-from-ctrls-in-putty (Morgy, 14/7/08)
#
# stty ixany
# stty ixoff -ixon
### Se precisar escutar Ctrl-S para alguns aplicativos, use estes dois:
stty stop undef
stty start undef

5

Eu tenho o problema oposto. De vez em quando, o host envia um XOFFao PuTTY, mas nunca envia o correspondente XONao PuTTY. Nesse caso, nada que você faça com o PuTTY (a menos que seja reiniciá-lo) irá desfazê-lo. Nesse caso, toda a entrada do teclado para o host está bloqueada, mas o host ainda pode enviar dados ao PuTTY.

Desabilitar o controle de fluxo no PuTTY não funciona.

A maneira de corrigir esse problema é usar

stty -ixoff

no seu perfil. Isso proíbe o host de enviar XON/ XOFF. Observe que os nomes das opções são totalmente confusos. ixon/ -ixonsignifica ativar / desativar o controle de fluxo no lado do cliente (o que significa que o cliente não pode emitir controle de fluxo), ixoff/ -ixoffsignifica ativar / desativar o controle de fluxo no lado do host (o que significa que o host não pode emitir controle de fluxo).

Aliás, o código ASCII para Ctrl- Se XOFF são o mesmo caractere ASCII (código 19, 0x13). Não há diferença. As configurações alteram a interpretação desse caractere ASCII.


Oh cara, eu procurei em todos os lugares por uma explicação para ixon e ixoff. Enviar XON / XOFF do cliente para o host faz sentido. No entanto, ainda estou confuso, em que situações o host envia ao controle de fluxo do cliente XON / XOFF? Eu vejo "quando a fila de entrada está quase vazia / cheia"? Isso acontece com computadores modernos, como não conectar a impressoras lentas? Mas o que isso praticamente significa? O que acontece com a interface do usuário do terminal?
precisa saber é o seguinte

O controle de fluxo funciona nas duas direções. Um computador moderno está sempre fazendo um milhão de outras coisas e pode "travar" a atividade crítica. Durante esse período, ele não pode atender à porta serial e a porta serial transbordará, a menos que o terminal seja desligado. Portanto, o host envia o XOFF ao terminal solicitando que ele pare de enviar. Quando a pressão está baixa, o host envia o XON. (btw, as portas seriais de computador geralmente têm apenas um pequeno buffer de hardware, digamos 16 bytes.) Mesmo sendo uma tecnologia antiga, qualquer coisa que não seja projetada para tempo real ocasionalmente "trava", portanto é necessário controle de fluxo.
precisa saber é o seguinte

BTW, eu encontrei casos em que um microcontrolador minúsculo de 20 MHz é capaz de sobrecarregar um computador host de 3 GHz, mas não vice-versa. Isso ocorre porque o microcontrolador está fazendo apenas uma coisa e projetado com o tempo real em mente, enquanto o computador host não está.
MarkLakata28 /

4

Abra o seu .bash_profilee coloque:

stty -ixon

O valor -xionnão funciona para mim. Você pode ver a entrada de homem: man stty.


+1 para stty -xion não funciona nos meus centos, mas stty -ixon funciona.
Jichao

0

Execute este comando no terminal para desativá-lo na sessão atual / adicione-o ao .bashrc para desativá-lo permanentemente

stty -ixon

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.