it-swarm-ru.tech

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

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

62
well actually

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

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

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

73
Lars Yencken

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

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

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

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

24
Gilles 'SO- stop being evil'

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

За одно окно

-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 ....

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

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

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

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

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

12
shellter

Во время работы screen:

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

4
ninjalj

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

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

пример:

alias goncompile='screen -r 2354'

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

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

3
caoimhin