Как восстановить «потерянный» сеанс экрана?

80

Каким-то образом мне удалось закрыть экранное окно без экрана, «заметив» его, поэтому сеанс все еще помечен как 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.

[Обновить]

В итоге я узнал, что сеанс не был потерян, но идентификатор первого сеанса есть 0. Второй сеанс, чем имеет идентификатор 1.

Framester
источник

Ответы:

108

Попробуйте сначала отсоединить его 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.
ангус
источник
11
то -d -rварианты вместе заставит приложить эту сессию.
Тим Кеннеди
Я всегда использую, screen -xчтобы я мог прикрепить из нескольких мест одновременно. Конечно, если вы случайно закроете окно, кажется, -d -rлучше держать все в порядке.
mpontillo
5
screen -r '1234.somescreensession'

Есть экран на:

1234.somescreensession (Прилагается)

Нет экрана, который должен быть возобновлен в соответствии с 1234.

Вот простой способ вернуть эту экранную сессию.

screen -D -r '1234.somescreensession'
bresti
источник
4

Я столкнулся с той же проблемой после того, как мое ssh-соединение неожиданно закрылось с сообщением, Write Failed: broken pipeкогда у меня был прикреплен сеанс экрана. Тем не менее, я не смог подключить экранную сессию, используя любую из приведенных выше команд. Обратите внимание, что я использую следующую версию:

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

По-видимому, был еще один случай sshdбега, который не давал мне отсоединиться и снова присоединить сеанс. После определения PIDсоответствующего экземпляра sshdи killего подключения я смог присоединиться screen -r.


Просто для информации: вы обязательно найдете более одного sshdдемона, один из которых будет соответствовать вашему текущему логину, а другой будет принадлежать устаревшему screenсеансу (действительно, может быть несколько других sshdзапущенных, принадлежащих нескольким другим screen).

el_tenedor
источник
У меня была такая же проблема, хороший звонок
Дианович
3

Иногда несколько экранов работают в фоновом режиме.

Они могут быть возобновлены:

screen -r [pid]

Чтобы получить экран, сначала запустите screen -R, затем вы увидите все запущенные PID экрана, после чего возобновите screen -r [pid].

Шив Сингх
источник