Impossible de reprendre l'écran, dit que je suis déjà attaché?

151

Je travaille sur un serveur Debian Jessie distant. J'ai démarré une session d'écran, commencé à exécuter un script, puis déconnecté par un délai d'attente du réseau.

Maintenant, je me suis connecté à nouveau et je veux reprendre la session.

Voici ce que je vois quand je liste des écrans:

$ 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.

Je semble être attaché à deux écrans à la fois.

Maintenant, je veux reprendre la session en cours avant pour voir les résultats de mon script:

$ 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.

Pourquoi je ne peux pas me reconnecter?

J'ai le même problème avec l'autre écran:

$ 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.
Richard
la source

Réponses:

242

La session est toujours attachée sur un autre terminal. Le serveur n'a pas détecté de panne de réseau sur cette connexion: il détecte uniquement la panne lorsqu'il tente d'envoyer un paquet et obtient une erreur en retour ou aucune réponse après un délai d'attente, mais cela ne s'est pas encore produit. Vous vous trouvez souvent dans une situation où le client a détecté la panne, car il a essayé d'envoyer une entrée et a échoué, mais le serveur est simplement en attente d'une entrée. Finalement, le serveur enverra un paquet keepalive et détectera que la connexion est morte.

En attendant, utilisez l' -doption pour détacher la session d'écran du terminal où elle se trouve.

screen -r -d 30608

screen -rd est à peu près le moyen standard d’attacher à une session d’écran existante.

Gilles
la source
15
Pour attacher à une session d’écran existante, c’est-à screen -x- screen -rddire s’y attacher après l’avoir détachée de chaque terminal auquel elle était attachée. Dans le cas du PO, je conviens que ce dernier est probablement préférable, mais dans le cas général, pas nécessairement. J'utilise généralement -xRd'attacher ou de créer s'il n'y a rien à attacher.
Stéphane Chazelas
10

Selon le manuel, vous pouvez "reprendre" uniquement les écrans détachés :

' [match] ' ' [match] ' Ne démarrez pas l'écran, mais imprimez une liste de chaînes d'identification de session (généralement de la forme pid.tty.host; voir Nom de la session). Les sessions marquées 'détachées' peuvent être reprises avec . Ceux marqués 'attaché' fonctionnent et ont un terminal de contrôle. Si la session s'exécute en mode multi-utilisateur, elle est marquée «multi». Les sessions marquées comme "inaccessibles" vivent sur un hôte différent ou sont mortes. Une session inaccessible est considérée comme morte lorsque son nom correspond au nom de l'hôte local ou au paramètre spécifié, le cas échéant. Voir le-ls
-list
screen -r-rflag pour une description comment construire des correspondances. Les sessions marquées «mortes» doivent être minutieusement vérifiées et supprimées. Demandez à votre administrateur système si vous n’êtes pas sûr. Supprimez les sessions avec l' -wipeoption ' '.

Ce que vous voulez, c'est cette option:

' -x'
Joindre à une session déjà attachée ailleurs (mode multi-affichages). L'écran refuse d'attacher de l'intérieur de lui-même. Mais lors de la mise en cascade de plusieurs écrans, les boucles ne sont pas détectées. prends soin de toi.

Thomas Dickey
la source
4
Avec -xune session sera toujours attaché «quelque part». Pour reprendre pleinement la session, vous devez utiliser -d | -D (options de détachement) avec -r | -R (options de réattachement).
Andrew Kozlov
1
C'est une alternative, mais peut ne pas être ce dont OP a besoin. J'attache souvent de plusieurs endroits.
Thomas Dickey
4

J'attache à l'écran avec des options -rD

De manuel:

-D -r
Reattach a session. If necessary detach and logout remotely first. 
Marsel Arduanov
la source