Можете ли вы отключить нажатие клавиши Ctrl-S (XOFF) в Putty?


41

Я делаю много ssh-ов и периодически нажимаю Ctrl+ S, что естественно отправляет XOFFи вызывает всевозможные проблемы (не говоря уже о том, что мне нужно время, чтобы понять, что произошло, потом еще какое-то время, чтобы вспомнить, что мне нужно нажать Ctrl+ Qчтобы восстановить.

Я бы скорее поручил Putty никогда не позволять мне печатать XOFF.

Есть идеи?


6
+1 за указание на то, что восстановление возможно с помощью Ctrl + Q. Мне очень помогли!
Дементо

1
+1 за вопрос, как отключить это поведение, потому что оно полностью устарело и бесполезно для моих целей. У всех в сети есть документированный трюк CTRL + q, но никто не задокументировал, как вообще связать ключи.
Андрей

1
Имейте в виду, что ctrl+qвосстановит кэшированный поток. Это означает, что если вы нажмете, ctrl+sа затем сойдете с ума, нажимая ctrl+cили что-то еще, когда вы нажмете ctrl+qвсе, что вы нажали до того, будет разыгран.
gcb

Каков эффект XOFF?
Снегопад

Ответы:


35

Не знаю насчет Putty, но вы можете использовать:

stty -ixon

на удаленном хосте, чтобы отключить сигналы START / STOP.


Спасибо - любая идея, если или как это влияет на консоль? Изменит ли это поведение программ оболочки? (Единственное, что я знаю о XON / XOFF, это то, что он используется для управления последовательным потоком). Похоже, хорошая настройка для .bash_profile.
Сет

Это должно быть stty -ixon.
Странно,

Сожалею. Обновил мой пост, чтобы исправить опечатку.
Бартош

1
Как я только что прокомментировал BlakBat с его ответом , он ^Sне отправляет XOFF, но теперь переводит меня в i-searchрежим. Есть ли способ, которым я могу получить Bash (или PuTTY), чтобы просто отказаться от любого ^S? Еще лучше было бы, если бы он мог издавать звуковые сигналы и / или мигать на меня; o)
Оуэн Блэкер

1
Я добавил stty -ixonв свой профиль скрипты. Я прочитал около 100 статей о том, как, когда вы случайно нажимаете CTRL + s, все, что вам нужно сделать, это возобновить CTRL + q ... но я не хочу, чтобы моя оболочка вообще перехватывала CTRL + s / q так как я использую их с vim совсем немного. Большое спасибо за ответ, который никто, кажется, даже не рассматривает.
Андрей

29

Решение PuTTY:

  1. перед созданием сеанса перейдите к Connection-> SSH-> TTY в списке.
  2. в раскрывающемся списке «Режим» выберите IXON ( примечание : начиная с версии 0.60 этот список не упорядочен по алфавиту)
  3. положить «0» ( ноль ) в качестве значения IXON .

Скриншот

Работает как очарование, даже если вы открываете «экран GNU» поверх него, SSH для другого хоста или «su» для другого пользователя

Если вы используете GNU Bash, ctrl-S должен позволить вам теперь делать историю прямого поиска (он же i-search)

Вы можете увидеть разницу в выводе "stty -a | grep -o" .ixon " : с настроенной замазкой он печатает " -ixon " , без " ixon "


2
Хорошо, это ^Sне отправляет XOFF, но теперь переводит меня в i-searchрежим. Есть ли способ, которым я могу получить PuTTY (или bash), чтобы просто отказаться от любого ^S? Еще лучше было бы, если бы он мог издавать звуковые сигналы и / или мигать на меня; o)
Оуэн Блэкер

Чтобы деактивировать действие, вы можете связать ^ S ни с чем через bind '"\ Cs"'. Это заставляет мой PuTTY мигать, потому что действие не отображается.
BlakBat

1
Я устал от замазки 0,62 и вышеуказанная установка не помогает. Я пытался переопределить XON, XOFF и с другими значениями, но ничего не изменилось.
Денис С

1
Это также работает для вложенных сессий SSH с использованием openssh в качестве 2-го, 3-го (и т. Д.) Клиента
Фелипе Альварес

1
Выдвижение этого ответа - лучший способ отключить управление программным потоком. Для управления поведением терминала эмулятор терминала является лучшим местом для его настройки. Отключение управления потоком XON / XOFF в Putty означает, что, когда псевдотерминал запрашивается с удаленного хоста, серверы SSH будут соблюдать эту настройку при выделении псевдотерминала. См. Tools.ietf.org/html/rfc4254#section-6.2
Энтони

5
Пример .bashrc:
#
# Прекратить Putty делать XOFF / XON с помощью Ctrl-S / Ctrl-Q
# ИСТОЧНИК: http://raamdev.com/recovering-from-ctrls-in-putty (Morgy, 14.07.08)
#
# stty ixany
# stty ixoff -ixon
### Если вам нужно прослушать Ctrl-S для некоторых приложений, используйте эти два:
стти стоп недеф
не начни undef

5

У меня есть противоположная проблема. Время от времени хост отправляет XOFFPuTTY, но никогда не отправляет соответствующее XONPuTTY. В этом случае ничто из того, что вы делаете с PuTTY (кроме перезапуска), не приведет к его удалению. В этом случае весь ввод с клавиатуры на хост блокируется, но хост все равно может отправлять данные в PuTTY.

Отключение управления потоком в PuTTY не работает.

Чтобы решить эту проблему, используйте

stty -ixoff

в вашем профиле. Это запрещает хосту отправлять XON/ XOFF. Обратите внимание, что названия параметров полностью сбивают с толку. ixon/ -ixonозначает включить / отключить управление потоком на стороне клиента (имеется в виду, что клиент не может выдавать управление потоком), ixoff/ -ixoffозначает включить / отключить управление потоком на стороне хоста (означает, что хост не может выдавать управление потоком).

Кстати, код ASCII для Ctrl- Sи XOFF - это один и тот же символ ASCII (код 19, 0x13). Там нет разницы. Настройки изменяют интерпретацию этого символа ASCII.


О, чувак, я всюду искал объяснения для ixon и ixoff. Отправка XON / XOFF от клиента к хосту имеет смысл. Тем не менее, я все еще в замешательстве, в каких ситуациях хост посылает клиенту управление потоком XON / XOFF? Я вижу "когда входная очередь почти пуста / заполнена"? Это происходит с современными компьютерами, например, при отсутствии подключения к медленным принтерам? Но что это практически означает? Что происходит с пользовательским интерфейсом терминала?
CMCDragonkai

Контроль потока работает в обоих направлениях. Современный компьютер всегда делает миллион других вещей, и он может «зависать» при выполнении критически важной деятельности. В течение этого времени он не может обслуживать последовательный порт, и последовательный порт будет переполнен, если терминал не отключится. Таким образом, хост отправляет XOFF терминалу с просьбой прекратить отправку. Как только давление отключено, хост отправляет XON. (Кстати, последовательные порты компьютера обычно имеют небольшой аппаратный буфер, скажем, 16 байт.) Несмотря на то, что это древняя технология, все, что не предназначено для работы в режиме реального времени, иногда «зависает», поэтому необходимо управление потоком.
Марк Лаката

Кстати, я обнаружил случаи, когда крошечный микроконтроллер с частотой 20 МГц способен переполнять хост-компьютер с частотой 3 ГГц, но не наоборот. Это связано с тем, что микроконтроллер выполняет только одну задачу и предназначен для работы в режиме реального времени, а главный компьютер - нет.
Марк Лаката

4

Открой свой .bash_profileи поставь:

stty -ixon

Ценность -xionне работает для меня. Вы можете увидеть запись человека: man stty.


+1 для stty -xion не работает на моем centos, но stty -ixon работает.
Jichao

0

Запустите эту команду в терминале, чтобы отключить ее для текущего сеанса, или добавьте в .bashrc, чтобы отключить ее навсегда.

Стю-Иксон

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.