Не могу возобновить экран, пишет, что я уже подключен?

Не могу возобновить экран, пишет, что я уже подключен?

Я работаю на удаленном сервере Debian Jessie. Я запустил сеанс screen, запустил скрипт, а затем был отключен из-за тайм-аута сети.

Теперь я снова вошел в систему и хочу возобновить сеанс.

Вот что я вижу, когда перечисляю экраны:

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

Я как будто подключен к двум экранам одновременно.

Теперь я хочу возобновить сеанс, который я запускал ранее, чтобы увидеть результаты моего скрипта:

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

решение1

Сеанс все еще подключен к другому терминалу. Сервер не обнаружил сбой сети на этом соединении: он обнаруживает сбой только тогда, когда пытается отправить пакет и получает ошибку или не отвечает после тайм-аута, но этого еще не произошло. Вы находитесь в обычной ситуации, когда клиент обнаружил сбой, потому что он попытался отправить какой-то ввод и потерпел неудачу, но сервер просто сидит и ждет ввода. В конце концов сервер отправит пакет keepalive и обнаружит, что соединение мертво.

В это время воспользуйтесь -dвозможностью отсоединения сеанса экрана от терминала, в котором он находится.

screen -r -d 30608

screen -rd— это, по сути, стандартный способ присоединения к существующему сеансу экрана.

решение2

Согласноруководствовы можете "возобновить" толькоотсоединенныйэкраны:

'-ls [соответствовать]'
'-list [соответствовать]'
Не запускать screen, а вместо этого вывести список строк идентификации сеанса (обычно в форме pid.tty.host; см. Имя сеанса).Сеансы, отмеченные как «отделенные», можно возобновить с помощьюscreen -r. Те, которые отмечены как «присоединенные», запущены и имеют управляющий терминал. Если сеанс работает в многопользовательском режиме, он отмечен как «многопользовательский». Сеансы, отмеченные как «недоступные», либо находятся на другом хосте, либо мертвы. Недоступный сеанс считается мертвым, если его имя совпадает либо с именем локального хоста, либо с указанным параметром, если таковой имеется. См. флаг -rдля описания того, как строить соответствия. Сеансы, отмеченные как «мертвые», следует тщательно проверить и удалить. Обратитесь к системному администратору, если вы не уверены. Удалите сеансы с помощью -wipeпараметра « ».

Вам нужна такая опция:

'-x'
Присоединиться к сеансу, который уже присоединен в другом месте (многоэкранный режим). Экран отказывается присоединяться изнутри себя. Но при каскадировании нескольких экранов циклы не определяются; будьте осторожны.

решение3

Прикрепляю screenс вариантами -rD.

См. руководство:

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

решение4

Я знаю два способа:

  1. экран -rd <имя_экрана/идентификатор>

Это отсоединит экран и снова подключит вас. Это закроет экран для всех предварительно подключенных пользователей.

  1. экран -x <имя_экрана/идентификатор>

Это напрямую подключит вас к экрану, не прерывая подключенных пользователей. Это в основном используется для многопользовательских дисплеев.

Связанный контент