SSH接続が切断された後、スクリーンセッションに再接続できません


16

以前、長時間実行されるスクリーンセッションにを再接続しましたscreen -dr control。ただし、このコマンドが画面に再アタッチされず、永久にハングすることがあります(10分以上経過してから中止しました)。これは、SSH接続が予期せずに切断された場合にのみ発生し、画面がで適切に切断された場合には発生しませんCtrl-A d。以下のような他のスイッチ、screen -xまたはscreen -D -RRさらには動作しません。

この投稿は、画面の切断を完了する画面セッションを保持しているPTYを強制終了することを示唆しています。ただし、screen -dr control呼び出し元のシェルを強制終了します。

例えば:

$ ps -ef | grep control | grep -v grep
nomad     7387  7109  0 13:05 pts/50   00:00:00 screen -dr control
nomad    15299     1  0 Nov27 ?        00:13:47 SCREEN -S control

$ ps -ef | grep bash | grep 'pts/50'
nomad     7109  7108  0 12:49 pts/50   00:00:00 -bash

リンクされた投稿はbash、PID 7109 のプロセスを強制終了することを示唆しています。これはscreen -dr control、PID 7387 のプロセスも強制終了します。その後、画面に接続できません。

SCREEN -S controlスクリーンセッションを開始したプロセスはinit、親として明らかに殺すことができません。

ハングしたスクリーンセッションに再接続する方法はありますか?

更新:これは、カーネル2.6.32-358.6.1.el6.x86_64を使用するCentOS 6.4で発生します。シェルはすべてbashバージョン4.1.2(1)-releaseです。


3
screen -lsこれらの「ハング」するケースでは何と言いますか?screen -d -r <session>は、「切り離して回復」を意味するため、直接切り離さなくても問題ありません。(そして、それを頻繁に行うため、そうではありません...)
mveroone

画面プロセスでlsofを実行してみてください。「スタック」しているものがないか確認してください。Screenは、プロセス間で通信するためにUNIXソケットを使用します。何かが開いている可能性があります。また、ソケットが削除されたり、所有権が変更されたりしていないことを確認してください。一般的には、使用しているOSとバージョンも含める必要がありますが、今回はOSに依存する特定のことは考えていません。
ダンプリッツ

3
たとえば、netcatをプロキシコマンドとして使用して、別のホップ経由でsshしますか?この場合、最初のボックスへのssh接続がドロップするという問題がありましたが、netcatプロキシコマンドは「2番目」のssh接続を開いたままにします。ただし、-dは機能するはずです。
イェンスティマーマン

イェンス、あなたのアドバイスはトリックをしました。私は確かにnetcatを介してプロキシを実行し、中間ホストでそれを殺すことで画面に再接続することができました。
ヴィクトルローゼンフェルド

ハングした画面コマンドの親プロセスを強制終了したいのはなぜですか?アタッチ画面コマンド自体を強制終了します。#7387あなたの場合。
マティアスユリクス14年

回答:


6

試してみるべきだと思う

screen -DR 

次回も-怒っている(大文字の)呼び出しは、中間のnetcatホップによって保持されている他のセッションを強制的に切断する必要があります。


私はこれを試しましたが、うまくいきません。netcatプロキシを殺すとうまくいきます。
ヴィクトルローゼンフェルド14年

奇妙な。そうすべき。代わりに何が起こりますか?
マティアスユリックス14年

それ以降の画面の呼び出し(-dr、-x、-DR)はすべて永久にハングします。netcatプロキシを強制終了すると、これらの呼び出しは再び機能します。
ヴィクトルローゼンフェルド14年

1

Jens Timmermanが示唆したように、この奇妙な動作の究極の理由は、SSH ProxyCommandおよびを使用してリモートサーバーに接続していたことncatです。ncat中間マシンでを終了した後、スクリーンセッションに再接続できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.