web-dev-qa-db-ja.com

「失われた」画面セッションを回復する方法は?

どういうわけか、画面に「通知」せずに画面ウィンドウを閉じることができたため、セッションにはattachedのフラグが付けられています。これにより、このセッションに再接続できなくなります。私に何ができる?

me@iupr-serv8:~$ screen -r
There are several suitable screens on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:34 PM)    (Attached)
    24658.pts-19.XXX-serv8  (01/05/2012 07:11:38 PM)    (Detached)
    24509.pts-19.XXX-serv8  (01/05/2012 07:10:00 PM)    (Detached)
    18676.pts-5.XXX-serv8   (01/02/2012 06:55:33 PM)    (Attached)
Type "screen [-d] -r [pid.]tty.Host" to resume one of them.
me@XXX-serv8:~$ screen -r 25028
There is a screen on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:33 PM)    (Attached)
There is no screen to be resumed matching 25028.

[更新]

結局、セッションは失われていないことがわかりましたが、最初のセッションのIDは0です。 ID 1の2番目のセッション。

81
Framester

最初にscreen -dを使用してデタッチしてください。それでもうまくいかない場合は、強調の昇順で試してください。

   -d|-D [pid.tty.Host]
        does  not  start screen, but detaches the elsewhere running screen session. It has the
        same effect as typing "C-a d" from screen's controlling terminal. -D is the equivalent
        to  the  power  detach key.  If no session can be detached, this option is ignored. In
        combination with the -r/-R option more powerful effects can be achieved:

   -d -r   Reattach a session and if necessary detach it first.

   -d -R   Reattach a session and if necessary detach or even create it first.

   -d -RR  Reattach a session and if necessary detach or create it. Use the first  session  if
           more than one session is available.

   -D -r   Reattach a session. If necessary detach and logout remotely first.

   -D -R   Attach  here and now. In detail this means: If a session is running, then reattach.
           If necessary detach and logout remotely first.  If it was not running create it and
           notify the user. This is the author's favorite.

   -D -RR  Attach here and now. Whatever that means, just do it.
110
angus
screen -r '1234.somescreensession'

次の画面があります。

1234. somescreensession(添付)

1234.somescreensessionに一致する再開する画面はありません。

これは、そのスクリーンセッションを取り戻す簡単な方法です。

screen -D -r '1234.somescreensession'
6
bresti

複数の画面がバックグラウンドで実行されている場合があります。

次の方法で再開できます。

screen -r [pid]

画面を取得するには、まずscreen -Rを実行します。次に、実行中のすべての画面のPIDが表示されます。その後、screen -r [pid]で再開します。

4
Shiv Singh

スクリーンセッションを接続しているときにssh接続が予期せずWrite Failed: broken pipeメッセージで閉じた後、同じ問題が発生しました。しかし、上記のコマンドのいずれかを使用してスクリーンセッションを再接続することができませんでした。次のバージョンを使用していることに注意してください。

~> screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

どうやら、実行中のsshdのインスタンスがまだあったため、セッションを切り離して再接続することができませんでした。 PIDsshdingの適切なインスタンスのkillを特定した後、screen -rで再接続することができました。


参考までに:複数のsshdデーモンが確実に見つかります。1つは現在のログインに対応し、もう1つは古いscreenセッションに属します(実際、他に複数のsshdsは、他の複数のscreensに属しています。

4
el_tenedor