Comment récupérer une session d'écran 'perdue'?

80

D'une manière ou d'une autre, j'ai réussi à fermer une fenêtre d'écran sans que l'écran ne s'en rende compte, de sorte que la session est toujours marquée comme attached. Cela m'empêche de me reconnecter à cette session. Que puis-je faire?

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.

[mise à jour]

En fin de compte, j'ai découvert que la session n'était pas perdue, mais que l'ID de la première session l'était 0. La deuxième session que a l'ID 1.

Framester
la source

Réponses:

108

Essayez de le détacher d'abord avec screen -d. Si cela ne fonctionne pas, vous pouvez essayer, par ordre croissant d' emphase ,

   -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.
Angus
la source
11
les -d -roptions ensemble vont forcer attacher cette session.
Tim Kennedy le
J'utilise toujours screen -xpour attacher de plusieurs endroits à la fois. Bien sûr, si vous fermez accidentellement une fenêtre, il semble -d -rpréférable de garder les choses en ordre.
Mpontillo
5
screen -r '1234.somescreensession'

Il y a un écran sur:

1234.somescreensession (Attaché)

Il n'y a pas d'écran à reprendre correspondant à 1234.somescreensession.

Voici un moyen simple de reprendre cette session d’écran.

screen -D -r '1234.somescreensession'
Bresti
la source
4

J'ai rencontré le même problème après la fermeture inopinée de ma connexion ssh avec le message Write Failed: broken pipealors qu'une session d'écran était attachée. Cependant, je ne pouvais pas rattacher ma session d'écran à l'aide des commandes ci-dessus. Notez que j'utilise la version suivante:

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

Apparemment, il y avait toujours une instance d' sshdexécution qui m'empêchait de détacher et de rattacher la session. Après avoir identifié l’ PIDinstance appropriée de sshdet intervenue kill, j’ai été en mesure de la rattacher screen -r.


Juste pour information: vous trouverez certainement plus d’un sshddémon, un correspondra à votre identifiant actuel et un autre appartenant à la screensession obsolète (en fait, il pourrait y avoir plusieurs autres sshdutilisateurs appartenant à plusieurs autres screen).

el_tenedor
la source
J'ai eu le même problème bon appel
dianovich
3

Parfois, les écrans multiples fonctionnent en arrière-plan.

Ils peuvent être repris par:

screen -r [pid]

Pour obtenir l’écran, lancez-le d’abord screen -R, puis vous verrez tous les PID en cours d’écran, puis reprenez-le screen -r [pid].

Shiv Singh
la source