Как назначить имя для экрана? [закрыто]

471

Я использую screenмультиплексор в командной оболочке и открываю множество экранов. Затем я забываю, какой идентификатор процесса связан с какой задачей.

Я хотел бы задать имя для экрана, но не могу найти параметр на странице руководства.

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

There are screens on:
    5422.pts-1.aws1 (Detached)
    5448.pts-1.aws1 (Detached)
    5027.pts-1.aws1 (Detached)
3 Sockets in /var/run/screen/S-sb.

И я хотел бы видеть что-то вроде этого:

There are screens on:
    5422.logCleanWorker (Detached)
    5448.overNightLongTask(Detached)
    5027.databaseOverNightLongTask (Detached)
3 Sockets in /var/run/screen/S-sb.

Как я могу это сделать?

spankmaster79
источник
4
вопрос больше похож на вопрос «как переименовать существующие сессии», а не «как начать новые сессии с именем». В этом контексте выбранный в настоящее время ответ не совсем уместен. Правильный ответ, скорее всего, должен быть таким: user164176- stackoverflow.com/a/3309696/636762
Ракиб
Названия ваших сеансов экрана предполагают, что вы создаете новый сеанс экрана для одной задачи (может быть, одной команды). Screen поддерживает несколько окон , поэтому вы можете запускать все эти задачи в одном сеансе экрана.
Мелебиус
3
Можно ли перенести это в SuperUser (или на другой сайт StackExchange)? Очевидно, что это довольно полезно для многих людей, хотя это выходит за рамки данного конкретного сайта.
Патрик Санан
1
если вы найдете вариант на этом сайте, чтобы переместить его туда со всей историей, то я бы согласился переместить его
spankmaster79

Ответы:

652

Начать новый сеанс

screen -S your_session_name

Переименовать существующий сеанс

Ctrl+ a, имя :сеанса YOUR_SESSION_NAMEEnter

Вы должны быть внутри сессии

user164176
источник
14
Это подходящее решение, поскольку оно направлено на переименование существующего сеанса, а не на создание нового.
thanos.a
4
Краткая заметка о C-a :синтаксисе .... "По умолчанию все экранные команды начинаются с клавиши escape C-a(это Control-a, иногда пишется ^a). Для отправки литерала C-aпрограммам на экране используйте C-a a. Это полезно при работе с Экран на экране. Например C-a a n, переместит экран в новое окно на экране на экране. " (ссылка: aperiodic.net/screen/quick_reference )
Нейт Риттер,
Очень признателен. Несмотря на то, что я знаю, что вы можете начать с имени, я часто начинаю без имен, а потом хотел бы позже. Спасибо!
Кецак
2
согласился, посмотрев на это пару лет спустя: D
spankmaster79
Могу ли я связать что- C-a :sessionname NEWNAMEто быстрее, чтобы напечатать? Я пытался, bind $ sessionnameно теперь, когда я C-a $не запрашиваю новое имя. Это как-то возможно?
Андреас-ч
592

Чтобы создать новый экран с именем foo, используйте

screen -S foo

Затем, чтобы снова прикрепить его, запустите

screen -r foo  # or use -x, as in
screen -x foo  # for "Multi display mode" (see the man page)
miedwar
источник
16
В своем решении вы объясняете, как создавать новые с правильными именами, а не изменять существующие. Никто не хочет прекратить сеанс, если это возможно.
thanos.a
10
Прокрутите вниз до ответа пользователя user164176, чтобы увидеть, как переименовать существующие сеансы.
JLH
1
вопрос больше похож на вопрос «как переименовать существующие сессии», а не «как начать новые сессии с именем». В этом контексте выбранный в настоящее время ответ не совсем уместен. Выбранный правильный ответ, скорее всего, должен быть получен от user164176- stackoverflow.com/a/3309696/636762 ниже
Rakib
Я искал "Ubuntu создать новый экран с именем" в Google, и это был первый результат. Именно то, что я искал :) спасибо
Skylord123
Чтобы переименовать сеанс: Ctrl + a,: sessionname YOUR_SESSION_NAME Войдите.
Слейк
51

Как уже говорилось, screen -S SESSIONTITLEработает для запуска сеанса с заголовком ( SESSIONTITLE), но если вы начинаете сеанс, а затем решаете изменить его заголовок. Это может быть достигнуто с помощью привязок клавиш по умолчанию:

Ctrl+ a,A

Который подсказывает:

Set windows title to:SESSIONTITLE

Изменить SESSIONTITLEпутем возврата и набрав в нужном заголовке. Для подтверждения изменения названия и перечислите все названия.

Ctrl+ a,"

E4Y
источник
40
Вы рассматриваете термины сеанс и окно как взаимозаменяемые, когда они не являются. Ctrl+a, Aне устанавливает имя сеанса ( SESSIONNAME), оно только устанавливает текущий заголовок окна . Названия окон в сеансе не отображаются в списке сеансов при запросе screen -list. Вопрос спрашивает, как установить имя сеанса .
StvnW
5
полезно, но это меняет текущий заголовок окна, а не имя сеанса.
Зник
13

Самый простой способ использовать экран с именем

screen -S 'name' 'application'
  • Ctrl+ a, d= выйти и оставить приложение открытым

Вернуться на экран:

screen -r 'name'

например, используя рысь с экраном

Создать экран:

screen -S lynx lynx

Ctrl+ a,d = выход

позже вы можете вернуться с:

screen -r lynx
OneOFPunx
источник
18
Три проблемы с этим. Во-первых, несколько человек уже опубликовали это. Во-вторых, вы рассказываете ему основные сведения об использовании экрана, которые он уже знает. В-третьих, вы на самом деле не ответили на вопрос, поскольку он спросил, как назвать уже существующую сессию экрана.
Стил Дан
0

Я новичок в проверке, но считаю это чрезвычайно полезным при восстановлении потерянных соединений. На ваш вопрос уже дан ответ, но эта информация может послужить дополнением - я использую putty с менеджером соединений putty и называю свои экраны - "tab1", "tab2" и т. Д. - для меня общая картина 8-10 вкладки важнее, чем каждое отдельное имя вкладки. Я использую 8-ю вкладку для подключения к БД, 7-ю - для просмотра журналов и т. Д. Поэтому, когда я хочу снова подключить свои экраны, я написал простую оболочку, которая говорит:

#!/bin/bash
screen -d -r tab$1

где первый аргумент - номер вкладки.

Саураб Хирани
источник
1
Это может быть лучше сделано как функция bash.
Пол Прайс