У меня запущен irssi на экране, и я подключаюсь к нему через ssh (с PuTTY). Когда я неожиданно теряю свое ssh-соединение, если irssi было активным окном экрана, после повторного подключения / повторного подключения оно часто сбрасывается и повторно подключается ко всем IRC-серверам. Есть ли способ "изолировать" его от ssh-сессии, чтобы он оставался подключенным?
1 ответ
Происходит то, что irssi пытается что-то записать на экран (его терминал), а screen пытается записать в ваше ssh-соединение. Запись экрана блокируется, поэтому он также блокирует irssi, который затем больше не отвечает на PING с серверов, которые затем отключают его.
Решение сказать экран не блокировать приложение в нем, если экран блокирует. Вы можете сделать это с помощью команды экрана nonblock
:nonblock on
Это просто влияет на текущее окно на экране. Чтобы применить его к новым окнам по умолчанию, используйте defnonblock on
. И чтобы делать это каждый раз, когда вы запускаете экран, поместите его в ~/.screenrc
:
defnonblock on
С man screen
:
nonblock [on|off|numsecs]
Скажите экран, как обращаться с пользовательскими интерфейсами (дисплеями), которые перестают принимать вывод. Это может произойти, если пользователь нажимает ^ S или соединение TCP/ модема обрывается, но не происходит зависание. Если неблокирование отключено (это значение по умолчанию), экран ожидает перезагрузки дисплея, чтобы принять вывод. Если неблокирование включено, экран ожидает, пока не истечет тайм-аут (вкл. Рассматривается как 1 с). Если дисплей по-прежнему не принимает символы, экран сочтет его "заблокированным" и прекратит отправку символов на него. Если через некоторое время он перезапустит прием символов, экран разблокирует дисплей и снова отобразит обновленное содержимое окна.