У меня есть программа, работающая под экраном. Фактически, когда я отсоединяюсь от сеанса и проверяю netstat, я вижу, что программа все еще работает (что я и хочу):
udp 0 0 127.0.0.1:1720 0.0.0.0:* 3759/ruby
Теперь я хочу присоединиться к сеансу, на котором запущен этот процесс. Поэтому я запускаю новый терминал и набираю screen -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, чтобы дать ему имя. Это имя будет использоваться в списке окон и поможет вам вспомнить, что вы делаете в каждом окне, когда вы начинаете использовать много окон. "
Дело в том, что когда я нахожусь в новом сеансе экрана, я пытаюсь нажать control + A, и ничего не происходит.
command-line
gnu-screen
JohnMerlino
источник
источник
screen -r
следует номер 1, 2, 3 ... в этом списке экранов.Ответы:
Здесь есть два уровня «списков». Во-первых, у вас есть «список окон» в рамках отдельного сеанса, для чего предназначен ctrl-A A, а во-вторых, «листинг сессий», который вы вставили в свой вопрос и что также можно просмотреть
screen -ls
.Вы можете настроить имена сеансов с помощью
-S
параметра, иначе он использует ваше имя хоста (teamviggy), например:(Ctrl-A d, чтобы отсоединиться)
(Ctrl-A d, чтобы отсоединиться)
В качестве бонуса вы можете использовать однозначную аббревиатуру имени, которое вы передаете
-S
позже, чтобы восстановить соединение:(Я переподключен к
myprogramrunningunderscreen
сессии)источник
ctrl-A a
иctrl-A shift-A
. Последний побудил меняSet window's title to:
. Убедитесь, что вы нажимаете клавишу shift для второго А.-S
имени, то при возобновлении вы должны использовать, по крайней мере, однозначную аббревиатуру имени, следующего за номером ID, и точку в полном имени сеанса экрана, в отличие от автоматически сгенерированные имена сеансов, где вы можете включить идентификатор и точку.У меня был случай, когда
screen -r
не удалось присоединить. Добавляем-d
флаг, чтобы он выглядел такработал на меня. Это оторвало предыдущий экран и позволило мне снова присоединиться. Смотрите Man-страницу для получения дополнительной информации.
источник
Самый простой способ - просто подключиться к произвольному экрану с помощью
Затем, когда вы запустите экран, вы можете получить список всех активных экранов, нажав
Ctrl-A "
(например, control-A, за которым следует двойная кавычка). Затем вы можете просто выбрать активные экраны по одному и посмотреть, что они работают. Наименование экранов, конечно, облегчит выбор правильного.Просто мои два цента
источник
Я склонен использовать следующую комбинацию, где мне нужно работать на нескольких машинах в нескольких кластерах:
Это создает новый сеанс экрана, где я могу создать среду.
Это то, что я использую впоследствии, чтобы присоединиться к этому сеансу экрана. Изящные биты в том, что если сеанс присоединен в другом месте, он отключает этот другой дисплей. Более того, если по какой-то странной причине сеанс отсутствует, как, например, кто-то перезагрузил мой сервер без моего ведома, он его создает. В заключение. если существует несколько сеансов, он использует первый.
Много благодарности https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-инструкции для этого совета некоторое время назад.
РЕДАКТИРОВАТЬ:
Также вот несколько полезных объяснений
man screen
по загадочным параметраместь больше,
-D
так что не забудьте проверитьman screen
источник
Вывод
screen -list
форматируется какpid.tty.host
. Pids можно использовать для получения первого дочернего процесса сpstree
:Вы получите список, как это
источник
или же
источник