Повторное подключение к существующему сеансу экрана

44

У меня есть программа, работающая под экраном. На самом деле, когда я отсоединяюсь от сеанса и проверяю netstat, я вижу, что программа все еще работает (это то, что я хочу):

udp        0      0 127.0.0.1:1720          0.0.0.0:*                           3759/ruby       

Теперь я хочу снова подключиться к сеансу, выполняющему этот процесс. Поэтому я запускаю новый терминал и нажимаю экран -r

$ screen -r
There are several suitable screens on:
    5169.pts-2.teamviggy    (05/31/2013 09:30:28 PM)    (Detached)
    4872.pts-2.teamviggy    (05/31/2013 09:25:30 PM)    (Detached)
    4572.pts-2.teamviggy    (05/31/2013 09:07:17 PM)    (Detached)
    4073.pts-2.teamviggy    (05/31/2013 08:50:54 PM)    (Detached)
    3600.pts-2.teamviggy    (05/31/2013 08:40:14 PM)    (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Но как узнать, какой из них является сеансом, который я создал?

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

"Когда вы используете окно, введите Ca A., чтобы присвоить ему имя. Это имя будет использоваться в списке окон и поможет вам запомнить, что вы делаете в каждом окне, когда вы начинаете использовать много окон. "

Дело в том, что когда я нахожусь на новом сеансе экрана, я пытаюсь нажать кнопку управления + a, и ничего не происходит.     

задан JohnMerlino 01.06.2013 в 03:39
источник

4 ответа

55

Здесь есть два уровня «листинга». Во-первых, у вас есть «список окон» в рамках отдельного сеанса, для которого используется ctrl-A A, а во-вторых, есть «список сеансов», который вы вложили в свой вопрос, и что также можно просмотреть с помощью screen -ls .

Вы можете настроить имена сеансов с параметром -S , иначе он будет использовать ваше имя хоста (teamviggy), например:

$ screen

(ctrl-A d для отсоединения)

$ screen -S myprogramrunningunderscreen

(ctrl-A d для отсоединения)

$ screen -ls

There are screens on:
    4964.myprogramrunningunderscreen    (05/31/2013 09:42:29 PM)    (Detached)
    4874.pts-1.creeper  (05/31/2013 09:39:12 PM)    (Detached)
2 Sockets in /var/run/screen/S-paul.

В качестве бонуса вы можете использовать недвусмысленную аббревиатуру имени, которое вы перешли на -S позже, чтобы повторно подключиться:

screen -r myprog

(Я подключен к сеансу myprogramrunningunderscreen )

    
ответ дан Paul 01.06.2013 в 04:48
источник
9

Легкий способ - просто подключиться к произвольному экрану с помощью

screen -r

Затем, как только вы запускаете экран, вы можете получить список всех активных экранов, нажав Ctrl-A " (т. е. control-A, за которым следует двойная кавычка). Затем вы можете просто выбрать активные экраны по одному и посмотреть, что они запускают. Именование экранов, конечно, облегчит определение правильного.

Только мои два цента

    
ответ дан Dr K 08.07.2015 в 17:36
8

У меня был случай, когда screen -r не удалось снова подключиться. Добавив флаг -d , чтобы он выглядел следующим образом:

screen -d -r

работал для меня. Он отделил предыдущий экран и позволил мне снова подключиться. См. Страницу «Человек» для получения дополнительной информации.

    
ответ дан njcwotx 01.12.2016 в 21:31
0

Я обычно использую следующую комбо, где мне нужно работать на нескольких машинах в нескольких кластерах:

screen -S clusterX

Это создает новый сеанс экрана, где я могу создать среду.

screen -dRR clusterX

Это то, что я потом использую для повторного подключения к этому сеансу экрана. Отличные биты состоят в том, что если сеанс подключен в другом месте, он отделяет этот другой экран. Более того, если нет какой-либо сессии по какой-то причудливой причине, например, кто-то перезагрузил мой сервер, не зная меня, он создает его. В заключение. если существует несколько сеансов, он использует первый.

Значительное удовольствие от Ссылка для этого чата назад.

    
ответ дан Lefty G Balogh 04.01.2018 в 11:01