web-dev-qa-db-ja.com

ssh接続が失われたときにサーバーに再接続する画面のirssi

画面でirssiを実行していて、ssh(PuTTYを使用)経由で接続しています。予期せずssh接続が失われた場合、irssiがアクティブな画面ウィンドウであった場合、再接続/再接続すると、多くの場合、ドロップしてすべてのIRCサーバーに再接続します。接続されたままになるようにsshセッション?

2
Andrew Brockert

何が起こっているのかというと、irssiがscreen(その端末)に何かを書き込もうとし、screenがssh接続に書き込もうとします。 Screenの書き込みがブロックされているため、irssiもブロックされます。irssiはサーバーからのPINGに応答しなくなり、サーバーから切断されます。

画面がブロックされた場合に、画面にアプリケーションをブロックしないように指示するソリューション。これは、nonblock screenコマンドで実行できます:ctrl-A :nonblock on。これは、画面の現在のウィンドウに影響します。デフォルトで新しいウィンドウに適用するには、defnonblock onを使用します。そして、画面を開始するたびにそれを行うには、それを~/.screenrcに入れます。

defnonblock on

man screenから:

nonblock [on|off|numsecs]
出力の受け入れを停止するユーザーインターフェイス(ディスプレイ)の処理方法を画面に指示します。これは、ユーザーが^ Sを押すか、TCP /モデム接続が切断されたが、ハングアップが受信されなかった場合に発生する可能性があります。非ブロックがオフの場合(これがデフォルトです)、画面はディスプレイが再起動して出力を受け入れるまで待機します。非ブロックがオンの場合、画面はタイムアウトに達するまで待機します(オンは1として扱われます)。それでもディスプレイに文字が表示されない場合、画面は「ブロックされている」と見なし、文字の送信を停止します。ある時点で文字を受け入れるために再起動すると、screenは表示のブロックを解除し、更新されたウィンドウの内容を再表示します。
2