画面を再開できません、すでに接続されていると言いますか?


151

私はリモートのDebian Jessieサーバーで作業しています。スクリーンセッションを開始し、スクリプトの実行を開始しましたが、ネットワークタイムアウトにより切断されました。

今、私は再びログインし、セッションを再開したいと思います。

これは、画面をリストするときに表示されるものです。

$ screen -ls
There are screens on:
    30608.pts-8.myserver    (11/03/2015 08:47:58 AM)    (Attached)
    21168.pts-0.myserver    (11/03/2015 05:29:24 AM)    (Attached)
    7006.pts-4.myserver (10/23/2015 09:05:45 AM)    (Detached)
    18228.pts-4.myserver    (10/21/2015 07:50:49 AM)    (Detached)
    17849.pts-0.myserver    (10/21/2015 07:43:53 AM)    (Detached)
5 Sockets in /var/run/screen/S-me.

一度に2つの画面に接続されているようです。

次に、スクリプトの結果を確認するために、以前実行していたセッションを再開します。

$ screen -r 30608.pts-8.myserver
There is a screen on:
    30608.pts-8.OpenPrescribing (11/03/2015 08:47:58 AM)    (Attached)
There is no screen to be resumed matching 30608.pts-8.myserver.

再接続できないのはなぜですか?

他の画面でも同じ問題があります:

$ screen -r 21168.pts-0.myserver
There is a screen on:
    21168.pts-0.OpenPrescribing (11/03/2015 05:29:24 AM)    (Attached)
There is no screen to be resumed matching 21168.pts-0.myserver.

回答:


242

セッションはまだ別の端末に接続されています。サーバーはその接続でネットワークの停止を検出していません。パケットを送信しようとしたときに停止を検出するだけで、タイムアウト後にエラーが返されるか、応答がありませんが、まだ発生していません。クライアントが何らかの入力を送信しようとして失敗したためにクライアントが停止を検出したという一般的な状況にありますが、サーバーはそこに座って入力を待っています。最終的に、サーバーはキープアライブパケットを送信し、接続が切断されたことを検出します。

それまでの間は、-dオプションを使用して、スクリーンセッションが存在する端末からスクリーンセッションをデタッチします。

screen -r -d 30608

screen -rd は、既存のスクリーンセッションにアタッチする標準的な方法です。


15
既存のscreenセッションに接続するには、それはだscreen -xscreen -rdからそれを外した後、それに接続することで、すべてのそれはに添付されたターミナル。OPの場合、後者がおそらく好まれますが、一般的な場合では、必ずしもそうではないことに同意します。-xR添付するものがない場合は、通常、添付または作成に使用します。
ステファンシャゼル

10

マニュアルによると、切り離された画面のみを「再開」できます。

' [match] ' ' [match] ' 画面を起動せず、セッション識別文字列のリストを出力します(通常はpid.tty.hostの形式。セッション名を参照)。「デタッチ」とマークされたセッションは、で再開できます。「接続」とマークされたものは実行中であり、制御端末があります。セッションがマルチユーザーモードで実行されている場合、「マルチ」とマークされます。「到達不能」とマークされたセッションは、別のホストに存在するか、停止しています。到達不能セッションは、その名前がローカルホストの名前または指定されたパラメーター(存在する場合)のいずれかと一致する場合、デッドと見なされます。をご覧ください-ls
-list
screen -r-r一致を構築する方法の説明のフラグ。「デッド」とマークされたセッションは、徹底的にチェックして削除する必要があります。不明な場合は、システム管理者にお問い合わせください。' -wipe'オプションでセッションを削除します。

あなたが望むのはこのオプションです:

' -x'
すでに別の場所に接続されているセッションに接続します(マルチディスプレイモード)。画面はそれ自体からの接続を拒否します。ただし、複数の画面をカスケードする場合、ループは検出されません。気を付けて。


4
-xセッションはまだ「どこか」添付されます。セッションを完全に引き継ぐには、-r | -R(再接続オプション)とともに-d | -D(分離オプション)を使用する必要があります。
アンドリューコズロフ

1
それは代替手段ですが、OPが必要とするものではないかもしれません。私は頻繁に複数の場所から接続します。
トーマスディッキー

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