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

352

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

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

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

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.

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

  • 4
    вопрос больше похож на вопрос «как переименовать существующие сеансы», а не «как начать новые сеансы с именем». В этом контексте выбранный в настоящее время ответ не совсем уместен. Правильный ответ, скорее всего, должен быть предоставлен пользователем user164176 - stackoverflow.com/a/3309696/636762
  • 0
    Названия ваших сеансов экрана предполагают, что вы создаете новый сеанс экрана для одной задачи (возможно, одной команды). Экран поддерживает несколько окон , поэтому вы можете запускать все эти задачи в одном сеансе экрана.
Показать ещё 2 комментария
Теги:
gnu-screen

5 ответов

544
Лучший ответ

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

screen -S foo

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

screen -r foo  # or use -x, as in
screen -x foo  # for "Multi display mode" (see the man page)
  • 16
    В своем решении вы объясняете, как создавать новые с правильными именами, а не изменять существующие. Никто не хочет прекратить сеанс, если это возможно.
  • 10
    Прокрутите вниз до ответа пользователя user164176, чтобы увидеть, как переименовать существующие сеансы.
Показать ещё 3 комментария
430

screen -S SESSIONNAME подходит для запуска сеанса с именем, но если вы запустите сеанс и позже решите его назвать, введите командный режим (C-a :) и введите команду sessionname SESSIONNAME.

  • 14
    Это подходящее решение, поскольку оно направлено на переименование существующего сеанса, а не на создание нового.
  • 4
    Краткое примечание о Ca : синтаксис .... "Все экранные команды начинаются с префикса ESC, по умолчанию это Ca (это Control-a, иногда пишется ^a ). Чтобы послать буквальный Ca программам на экране, используйте Ca a Это полезно при работе с экраном внутри экрана. Например, Ca an переместит экран в новое окно на экране внутри экрана. " (ссылка: aperiodic.net/screen/quick_reference )
Показать ещё 3 комментария
40

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

Ctrl + a, a

Какие подсказки:

Set windows title to:SESSIONTITLE

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

Ctrl + a, "

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

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

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

Возврат к экрану:

screen -r 'name'

например, с помощью lynx с экраном

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

screen -S lynx lynx

Ctrl + a, d= exit

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

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню