Установка имени для сеанса экрана

46

Есть ли способ дать конкретное имя сеансу экрана Unix? Например, скажем, я запускаю одну и ту же программу несколько раз, каждая с разными параметрами, и я хочу сказать, какая из них какая.

а на самом деле
источник
Не вопрос программирования. Должен пойти в SuperUser или Unix.
0xC0000022L

Ответы:

56

Вы можете назвать сессию при запуске с -S nameопцией. Находясь в рабочем окне, вы можете изменить его, набрав CTRL-a, :sessionname name. Вы можете просматривать сеансы рабочего экрана с помощью screen -lsи подключаться к одному по имени с помощью screen -xS name.

В течение одного сеанса экрана вы также можете назвать каждое окно. Сделайте это, набрав CTRL-a, Aзатем имя, которое вы хотите. Вы можете просмотреть интерактивный список именованных окон, набрав CTRL-a, ", и выбрать тот, на который вы хотите переключиться из этого списка.

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

Ларс Йенкен
источник
Переименовать сеанс экрана после его запуска можно (используя :sessionname NEWNAME), но это "вообще не рекомендуется". $STYПеременная среды по- прежнему относится к первоначальному названию. См. screenРуководство: gnu.org/software/screen/manual/html_node/Session-Name.html
Кит Томпсон,
22

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

  • Вы можете иметь несколько окон экрана. Каждое окно запускает оболочку или другую программу. Все окна размещены в одном и том же процессе. C-a cсоздает окно C-a nи C-a pпереключается на следующее / предыдущее окно и т. д.
  • Вы можете иметь несколько сеансов экрана. Каждый сеанс размещается в своем собственном процессе и не зависит от всех других сеансов. Стартовый экран без какой- -rлибо -Rопции присоединения ( или ) создает новый сеанс.

В Windows есть заголовки, которые можно задать с помощью параметра -tкомандной строки, C-a Aпривязки ключа, titleкоманды или \ekescape-последовательности. Смотрите ответ оболочки для более подробной информации.

Сессии могут иметь имена. Вы обычно устанавливаете имя в командной строке с помощью -Sопции; если вы не укажете имя, экран создаст его. Если вы используете несколько сеансов экрана, вы обычно даете им разные имена сеансов. Вы можете перечислить сессию рабочего экрана с screen -ls; первое слово в каждой строке сеанса, 12345.sessionnameгде 12345 - это идентификатор процесса экрана. Используйте screen -r sessionnameили screen -r 12345для возобновления сеанса, указанного через его имя или идентификатор процесса.

Жиль "ТАК - перестань быть злым"
источник
1
В привязках клавиш по умолчанию, чтобы изменить заголовок, вы должны использовать Ca A.
enzotib
11

Ах ... Экран, он забирает меня обратно ;-)

За одно окно

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

Для нескольких сессий начался с вашего .screenrc

screen -t top 2 nice top
screen -t ....

Вот ссылка на одну онлайн -страницу руководства для экрана.

Редактировать: добавлено

Чтобы изменить текущее имя экрана, создайте инструмент сценария оболочки, например

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

Не проверено, у меня нет экрана в системе, над которой я работаю.

shellter
источник
Спасибо, это очень помогает. Есть ли способ переименовать уже существующий сеанс экрана?
ну на самом деле
@ Шарлотта: см. Правки. Спасибо за голоса!
shellter
Хороший ответ @shellter! Мне любопытно, вы сказали "забирает меня", чтобы обозначить, что в эти дни вы используете что-то еще (например, tmux), или просто ему больше 32 лет ?
tutuDajuju
1
@tutuDajuju: Глоток, теперь, когда я думаю об этом, я использовал screenпо крайней мере 25 лет. Забирает меня обратно, потому что теперь это особый случай использования, который приведет меня к screen. Обычно я просто продолжаю открываться X-Terms, но я помню, когда казалось невозможным работать Xна 486 ПК ;-) Ура!
Оболочка
@shellter FYI, я запускал X на 486 ПК с 8 МБ ОЗУ еще в 1992 году ...
Ино
4

Во время бега screen:

Ctrl+a(или какова бы ни была ваша screenпоследовательность побега)A

ninjalj
источник
3

Ответы выше уже говорят вам, как назвать экран при запуске. Они также указывают на то, что экран не может быть переименован после его запуска. Заголовок окна может быть установлен, но имя, используемое для прикрепления к экрану, остается pid.pty.host.

Однако для достижения полезного эффекта я обнаружил, что использование псевдонима работает довольно хорошо Если я забуду назвать экран или окажусь в сеансе с несколькими экранами, которые, естественно, стали экранами для определенных задач, я просто установлю псевдоним для команды, которая будет прикреплена к ним.

пример:

alias goncompile='screen -r 2354'

Выполнение команды alias само по себе напомнит вам, какие экраны у вас есть, и команду, которую вы установили для подключения к ним.

Используйте, unaliasчтобы удалить их.

caoimhin
источник