Не вдається відновити екран, каже, я вже вкладений?


151

Я працюю на віддаленому сервері Debian Jessie. Я розпочав сеанс на екрані, запустив сценарій, після чого відключився мережевим тайм-аутом.

Тепер я знову увійшов у систему і хочу відновити сесію.

Це я бачу, коли перелічую екрани:

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

Відповіді:


241

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

Тим часом скористайтеся -dопцією, щоб відключити сеанс екрана від терміналу, де він знаходиться.

screen -r -d 30608

screen -rd є майже стандартним способом приєднання до існуючого екранного сеансу.


15
Для приєднання до існуючого сеансу екрану, це screen -x, screen -rdщоб прикріпити до нього після того , як окремого його від кожного терміналу було приєднано. Що стосується ОП, я погоджуюся, що останній, мабуть, є кращим, але в загальному випадку це не обов'язково. Я зазвичай використовую -xRдля вкладення або створення, якщо нічого не можна прикріпити.
Стефан Хазелас

10

Відповідно до посібника ви можете "відновити" лише окремі екрани:

' [match] ' ' [match] ' Не запускайте екран, а замість цього надрукуйте список ідентифікаційних рядків сеансу (зазвичай форми pid.tty.host; див. Назва сесії). Сесії, позначені "відірваними", можна відновити . Ті, що позначені "прикріплені", працюють і мають контрольний термінал. Якщо сеанс працює в режимі багатокористувача, він позначається "мульти". Сесії, позначені як "недоступні", або живуть на іншому хості, або мертві. Недоступний сеанс вважається мертвим, коли його ім'я відповідає або імені локального хоста, або вказаному параметру, якщо він є. Дивіться-ls
-list
screen -r-rпрапор для опису, як будувати сірники. Сеанси, позначені як "мертві", слід ретельно перевірити та усунути. Якщо ви не впевнені, запитайте свого системного адміністратора. Видаліть сеанси за допомогою параметра " -wipe".

Що ви хочете, це такий варіант:

' -x'
Додайте до сеансу, який уже приєднаний в іншому місці (режим мульти-дисплея). Екран відмовляється приєднатися всередині себе. Але при каскаді декількох екранів петлі не виявляються; піклуватися.


4
З -xсеансом все ще буде додаватися 'десь'. Щоб повністю взяти на себе сеанс, слід використовувати -d | -D (параметри від'єднання) разом з -r | -R (параметри повторного вкладення).
Андрій Козлов

1
Це альтернатива, але може не те, що потрібно ОП. Я часто вкладаюсь з різних локацій.
Томас Дікі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.