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

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

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

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

  $ screen -r. Есть несколько подходящих экранов на: 5169.pts-2.teamviggy (31.05.2013)  21:30:28) (отключено) 4872.pts-2.teamviggy (31.05.2013, 21:25:30) (отключено) 4572.pts-2.teamviggy (31.05.2013, 09:07:  17:00) (Отсоединено) 4073.pts-2.teamviggy (31.05.2013 20:50:54) (Отсоединено) 3600.pts-2.teamviggy (31.05.2013 20:40:14) (  Отсоединено) Введите "screen [-d] -r [pid.] Tty.host", чтобы возобновить один из них.  

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

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

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

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


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

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

  $ screen  

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

   $ screen -S myprogramrunningunderscreen  

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

  $ screen -lsЕсть  экраны на: 4964.myprogramrunningunderscreen (31.05.2013 21:42:29 PM) (Отсоединено) 4874.pts-1.creeper (31.05.2013 21:39:12 PM) (Отсоединено) 2 сокета в/var /run/screen/S-paul.

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

  screen -r myprog  

(я повторно подключаюсь к myprogramrunningunderscree n сессия)


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

  screen -d -r  

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

1


Простой способ — просто повторно подключиться к произвольному экрану с помощью

  screen -r  

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

Всего два цента

2


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

  screen -S clusterX  

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

  screen -dR  R clusterX  

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

Большое спасибо https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-instructions для этого совета некоторое время назад.

EDIT:

Также вот несколько полезных объяснений из man screen по загадочным параметрам

  -d -r Повторно подключить сеанс и, при необходимости, сначала отсоединить его.  -d -R Повторно подключить сеанс и, при необходимости, отсоединить или даже сначала создать его.  -d -RR Повторно подключить сеанс и при необходимости отсоединить или создать его.  Используйте первый сеанс, если доступно более одного сеанса.  -D -r Повторно подключить сеанс.  Если необходимо, сначала отключитесь и выйдите из системы удаленно.  

есть еще с -D , поэтому обязательно проверьте man screen код>


Вывод из screen -list имеет формат pid.tty.host . Идентификаторы могут использоваться для получения первого дочернего процесса с помощью pstree :

  screen -list | cut -f1 -d '.' |  cut -f2 | xargs -n 1 pstree -p | grep "^ screen"  

Вы получите такой список

  экран (5169) --- zsh (5170) --- меньше (15268) экран (4872) --- zsh (4873) - + - cat (11364) ...  


  экран -d -r 4964  

или

  screen -d -r 4874  

  $  screen -ls Есть экраны на: 4964. myprogramrunningunderscreen (31.05.2013 21:42:29 PM) (Отсоединено) 4874.pts-1.creeper (31.05.2013 09:39:12 PM) (Отсоединено) 2 сокета в/var/run/screen/ S-paul.  

Оцените статью
motary.ru
Добавить комментарий