私はリモートの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.
セッションはまだ別の端末に接続されています。サーバーはその接続でのネットワークの停止を検出していません。サーバーがパケットを送信しようとしたときに停止を検出し、タイムアウト後にエラーが返されるか、応答がない場合にのみ検出されますが、まだ発生していません。クライアントが何らかの入力を送信しようとして失敗したために停止を検出したが、サーバーはそこに座って入力を待機しているという一般的な状況にあります。最終的にサーバーはキープアライブパケットを送信し、接続が切断されていることを検出します。
それまでの間、-d
オプションを使用して、スクリーンセッションを現在の端末から切り離します。
screen -r -d 30608
screen -rd
は、既存のスクリーンセッションにアタッチする標準的な方法です。
manual によると、detached画面のみを「再開」できます。
‘
-ls
[match]’
‘-list
[match]’
画面を起動せず、代わりにセッション識別文字列のリストを出力します(通常はpid.tty.Hostの形式です。セッション名を参照してください)。 「デタッチ」とマークされたセッションは、screen -r
で再開できます。 「接続」とマークされているものは実行中であり、制御端末を持っています。セッションがマルチユーザーモードで実行されている場合、「マルチ」のマークが付けられます。 「到達不能」とマークされたセッションは、別のホストに存在するか、または停止しています。到達不能なセッションは、その名前がローカルホストの名前または指定されたパラメーター(存在する場合)のいずれかと一致する場合、デッドセッションと見なされます。一致の作成方法については、-r
フラグをご覧ください。 「デッド」とマークされたセッションは、完全にチェックして削除する必要があります。不明な場合は、システム管理者に問い合わせてください。 「-wipe
」オプションを使用してセッションを削除します。
あなたが望むのはこのオプションです:
「
-x
」
他の場所ですでに接続されているセッションに接続します(マルチディスプレイモード)。画面自体からの接続を拒否します。ただし、複数の画面をカスケードすると、ループは検出されません。気を付けて。
オプション付きで画面に接続します-rD
マニュアルから:
-D -r
Reattach a session. If necessary detach and logout remotely first.