irssi 在 ssh 连接丢失时重新连接到服务器

irssi 在 ssh 连接丢失时重新连接到服务器

我在 screen 中运行 irssi,并通过 ssh(使用 PuTTY)连接到它。当我意外丢失 ssh 连接时,如果 irssi 是活动的 screen 窗口,则在重新连接/重新附加时,它通常会断开并重新连接到所有 IRC 服务器。有没有办法将它与 ssh 会话“隔离”以使其保持连接?

答案1

实际情况是,irssi 尝试向 screen(其终端)写入一些内容,screen 尝试写入您的 ssh 连接。Screen 的写入处于阻塞状态,因此它也会阻塞 irssi,然后 irssi 不再响应来自服务器的 PING,然后断开连接。

解决方案是,如果 screen 阻塞,则告诉 screen 不要阻塞其中的应用程序。您可以使用nonblockscreen 命令执行此操作:ctrl-A :nonblock on。这只会影响 screen 中的当前窗口。要将其默认应用于新窗口,请使用defnonblock on。每次启动 screen 时都要这样做,请将其放入您的~/.screenrc

defnonblock on

man screen

nonblock [on|off|numsecs]
告诉 screen 如何处理停止接受输出的用户界面(显示器)。如果用户按下 ^S 或 TCP/调制解调器连接被切断但未收到挂断,则会发生这种情况。如果 nonblock 处于关闭状态(这是默认设置),screen 将等待显示器重新启动以接受输出。如果 nonblock 处于打开状态,screen 将等待直到达到超时(打开被视为 1 秒)。如果显示器仍然没有收到字符,screen 将认为它“被阻止”并停止向其发送字符。如果它在某个时间重新启动以接受字符,screen 将解除对显示器的阻止并重新显示更新的窗口内容。

相关内容