Linux screen закрыть окно

Содержание
  1. GNU Screen (Русский)
  2. Установка
  3. Использование
  4. Стандартные команды
  5. Вводимые команды
  6. Именованные сеансы
  7. Настройка Screen
  8. Советы и рекомендации
  9. Автозапуск с помощью systemd
  10. Изменение escape-комбинации
  11. Запуск в окне 1
  12. Вложенные сеансы Screen
  13. Запуск Screen во всех командных оболочках
  14. Использование 256 цветов
  15. Информативный статус-бар
  16. Отключение приветственного сообщения
  17. Использование hardstatus в качестве динамического заголовка окна терминала
  18. Использование механизма прокрутки X
  19. Перемещение работающий программы в Screen
  20. Использование другой строки приглашения bash внутри screen
  21. Отключение визуального сигнала
  22. Избавление от вертикальных и горизонтальных полос
  23. Решение проблем
  24. Исправление остатков текста после редактора
  25. Исправление столбца Name в windowlist, который отображает только «bash»
  26. Смотрите также
  27. How Do I Close a Screen Session?
  28. What is a Screen?
  29. Setting-up Screen Sessions
  30. Closing a Screen Session
  31. Conclusion
  32. About the author
  33. Talha Saif Malik

GNU Screen (Русский)

Состояние перевода: На этой странице представлен перевод статьи GNU Screen. Дата последней синхронизации: 15 января 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

GNU Screen — это полноэкранный оконный менеджер для терминала, который мультиплексирует его между несколькими процессами, обычно интерактивными оболочками. Программы, запущенные в Screen, продолжают работать, когда их окно в данный момент скрыто, и даже когда весь сеанс screen отсоединён от пользовательского терминала.

Обзор возможностей можно почитать в документации GNU Screen.

Установка

Использование

Для ввода команд нужно нажать escape-комбинацию (по умолчанию Ctrl+a ) и затем нужное сочетание клавиш.

Некоторым пользователям Ctrl+a кажется неудобным. Можно назначить другое сочетание клавиш, как описано в разделе #Изменение escape-комбинации.

Стандартные команды

  • ctrl+a ? Отображает список команд и их параметры по умолчанию
  • ctrl+a : Ввод команды для screen
  • ctrl+a » Список окон
  • ctrl+a 0 Открыть окно 0
  • ctrl+a A Переименовать текущее окно
  • ctrl+a a Отправить ctrl+a в текущее окно
  • ctrl+a c Создать новое окно
  • ctrl+a S Разделить текущий регион на два по горизонтали
  • Ctrl+a | Разделить текущий регион на два по вертикали
  • ctrl+a tab Переключить фокус ввода на следующий регион
  • ctrl+a ctrl+a Переключение между текущим и предыдущим регионами
  • ctrl+a Esc Перейти в режим копирования (используйте enter для выделения текста)
  • ctrl+a ] Вставка текста
  • ctrl+a Q Закрыть все регионы кроме текущего
  • ctrl+a X Закрыть текущий регион
  • ctrl+a d Отключиться от текущего сеанса screen, оставив его работающим в фоне. Для переподключения используйте screen -r

Вводимые команды

  • Ctrl+a :quit Закрывает все окна и завершает сеанс screen
  • Ctrl+a :source ~/.screenrc Перезагружает файл настроек screenrc (также можно использовать /etc/screenrc )

Именованные сеансы

Создание сеанса с определённым названием:

$ screen -S название_сеанса 

Переименование текущего сеанса:

Ctrl+a :sessionname название_сеанса

Список всех существующих сеансов текущего пользователя:

Подключение к существующему сеансу по его имени:

$ screen -x название_сеанса 
$ screen -r название_сеанса 

Настройка Screen

Вы можете изменить настройки Screen по умолчанию в соответствии с вашими предпочтениями в файле .screenrc , который содержит команды, которые выполнятся при запуске (например, ~/.screenrc или на лету с помощью ввода команд (например, Ctrl+a :vbell off ).

Советы и рекомендации

Автозапуск с помощью systemd

Эта служба автоматически запускает screen для указанного пользователя (например, systemctl enable screen@florian ). Важно запускать эту службу как системную, так как systemd —user может не запуститься, а также будет завершён после закрытия последнего сеанса пользователя.

/etc/systemd/system/screen@.service
[Unit] Description=screen After=network.target [Service] Type=simple User=%i ExecStart=/usr/bin/screen -DmS autoscreen ExecStop=/usr/bin/screen -S autoscreen -X quit [Install] WantedBy=multi-user.target

Изменение escape-комбинации

Изменение стандартной escape-комбинации может быть хорошей идеей не только потому, что «a» обычно набирается левым мизинцем, но также и потому, что Ctrl+a часто используется как команда beginning-of-line в GNU Readline и bash-совместимых командных оболочках.

Читайте также:  Make command for linux

Её можно изменить с помощью опции escape в ~/.screenrc или параметра -e для команды screen .

Например, если вы заметите, что редко используете Ctrl+j в своей оболочке или редакторе, вы можете использовать escape ^Jj для изменения escape-последовательности на Ctrl+j . Второй «j» означает, что литерал Ctrl+j может быть отправлен на терминал путём нажатия Ctrl+j j . Для пользователей Dvorak более удобным может быть сочетание клавиш Ctrl+t ( escape ^Tt ).

Более экзотические варианты: escape « , который задаёт клавишу ` , или escape ^^^ , который задаёт Ctrl+^ .

Escape-комбинация также называется «командным символом» («command character») в документации Screen.

Запуск в окне 1

По умолчанию, первое окно screen имеет номер 0. Возможно, вы предпочтете начать с нумерацию с единицы, добавьте это в ~/.screenrc:

bind c screen 1 bind ^c screen 1 bind 0 select 10 screen 1

Вложенные сеансы Screen

Можно случайно застрять во вложенном сеансе screen. Частый сценарий: вы запускаете сеанс SSH внутри сеанса screen. В сеансе SSH вы запускаете screen. По умолчанию первый сеанс screen будет перехватывать команды Ctrl+a . Чтобы отправить команду второму сеансу screen, используйте Ctrl+a a и затем свою команду. Например:

  • Ctrl+a a d Отсоединяется от внутреннего сеанса screen.
  • Ctrl+a a K Завершает (kill) внутренний сеанс screen.

Запуск Screen во всех командных оболочках

Для Bash и Zsh добавьте следующий фрагмент в ваш .bashrc or .zshrc перед псевдонимами:

if [[ -z "$STY" ]]; then screen -xRR название_сеанса fi

Использование 256 цветов

По умолчанию Screen использует эмулятор 8-цветного терминала. Чтобы включить больше цветов, вам нужно использовать терминал, который их поддерживает, и установить правильное значение term. Будет использоваться terminfo для описания того, как будут интерпретироваться управляющие коды ANSI. Запись в структуре базы данных terminfo должна существовать, ncurses предоставляет много описаний в /usr/share/terminfo/ .

Сначала попробуйте общее значение:

Если это не работает, попробуйте установить значение, соответствующее вашему текущему терминалу. Например, при использовании терминала на основе xterm:

Примечание: Файл /usr/share/terminfo/r/rxvt-unicode-256color предоставляется пакетом rxvt-unicode-terminfo , который устанавливается как зависимость пакета rxvt-unicode . Однако, если вы подключаетесь к серверу по SSH и на нём запускаете screen, нужный файл terminfo может не найтись на сервере. В таком случае можно скопировать /usr/share/terminfo/r/rxvt-unicode-256color на сервер в каталог ~/.terminfo/ .

В крайнем случае попробуйте использовать termcapinfo:

attrcolor b ".I" # allow bold colors - necessary for some reason termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' # tell screen how to set colors. AB = background, AF=foreground defbce on # use current bg color for erased chars

Информативный статус-бар

Стандартный статус бар немного пустоват. Вы можете посчитать это полезным:

hardstatus off hardstatus alwayslastline hardstatus string '%[ %%H %][%= %%?%-Lw%?%(%%n*%f%t%?(%u)%?%)%%?%+Lw%?%?%= %][% %m-%d % %c %]'
hardstatus alwayslastline '%[ %%H %][%= %%?%-Lw%?%%n*%f %t%?%(%u)%?%%+Lw%?%= %][ %Load: %l %][%%Y-%m-%d %%c:%s %]'

В Screen версии 5 (master-ветка) escape-коды изменились:

truecolors on hardstatus off backtick 0 5 5 "/bin/date" '+%Y-%m-%d' backtick 1 5 5 "/bin/date" '+%H:%M' hardstatus alwayslastline '%[ %H ][%%= %%?%-Lw%?%%(%%n%f%t%?(%u)%?%%)%%?%+Lw%?%? %=%][ %%%0` %%%1`% ]'

Отключение приветственного сообщения

Использование hardstatus в качестве динамического заголовка окна терминала

Это довольно просто: переделайте текущий hardstatus на caption с уведомлением и отредактируйте соответствующим образом:

backtick 1 5 5 true termcapinfo rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;\007' hardstatus string "screen (%n: %t)" caption string "%%Y-%m-%d;%c %%-Lw%%[%n %t]%%%+Lw%1`" caption always

Это отобразит что-то вроде screen (0 bash) в заголовке окна вашего терминала. Caption содержит дату, текущее время и раскрашивает коллекцию экранных окон.

Читайте также:  Континент ап нарушена целостность файлов линукс

Использование механизма прокрутки X

Доступ к буферу прокрутки GNU Screen можно получить с помощью Ctrl+a [ . Однако это очень неудобно. Чтобы использовать полосу прокрутки эмулятора терминала (например, в xterm или Konsole), добавьте следующую строку [1]:

termcapinfo xterm*|rxvt*|kterm*|Eterm* ti@:te@

Перемещение работающий программы в Screen

Если вы запустили программу вне Screen, но теперь хотите поместить её внутрь Screen, вы можете использовать reptyr, чтобы переназначить процесс с его текущего TTY на Screen.

Найдите PID нужного процесса (например с помощью ps ax ) и используйте его как аргумент для команды reptyr внутри нужного окна screen:

Использование другой строки приглашения bash внутри screen

if [ -z $STY ] then PS1="ОБЫЧНЫЙ PROMPT" else PS1="PROMPT ДЛЯ SCREEN" fi

Отключение визуального сигнала

По умолчанию при получении ASCII-символа Bell Screen некрасиво мерцает. Можно отключить это и вернуть звуковой сигнал с помощью этой опции:

Избавление от вертикальных и горизонтальных полос

Чтобы скрыть вертикальные полосы:

Чтобы скрыть горизонтальные полосы, установите в caption основной и фоновый цвета в default (d) и выведите пустоту (» «):

Если это не сработает, попробуйте caption string «% » . Для стандартного чёрно-белого caption используйте caption string «%%3n %t» .

Решение проблем

Исправление остатков текста после редактора

После открытия и последующего закрытия текстового редактора внутри screen (например nano) текст может оставаться видимым в терминале. Исправление:

Исправление столбца Name в windowlist, который отображает только «bash»

Смотрите также

Источник

How Do I Close a Screen Session?

Sometimes we execute multiple screen sessions in GNU Screen which necessitates cleanup. In this short guide, we will walk you through the options of closing a screen session but firstly, let’s understand some essential information about the screen.

What is a Screen?

A terminal multiplexer is referred to as screen. Multiple interactive shells of the physical terminal are multiplexed by the screen. It permits the user to perform several tasks running in each terminal. All of these independent screen sessions execute their programs. If you accidentally closed or get disconnected from any screen session, that process will run within the screen session.

Читайте также:  Linux kernel image generic

For example, when upgrading an Ubuntu server via SSH, if your SSH session is terminated for any reason, the screen command will continue the upgrade process undoubtedly.

Here, we have provided you a list of important keyboard shortcuts for managing various nested sessions.

Function Keyboard Shortcut
Showing keybindings Ctrl+a ?
Ending session and terminating Screen Ctrl+a \
Closing the current session Ctrl+a X
Closing all sessions except the current one Ctrl+a Q
Splitting current region vertically into two regions Ctrl+a l
Splitting current region horizontally into two regions Ctrl+a S
Switching to session number 0 Ctrl+a ”
Switching to the previous session Ctrl+a p
Switching to the next session Ctrl+a n
Listing all sessions Ctrl+a 0

Now, we will demonstrate to you the complete procedure of closing an existing screen session. Before starting this, check out the below-given method for setting up some screen session.

Setting-up Screen Sessions

As a result of the command execution, two sessions will be initialized named “my_session_1”, and “my_session_2”.

Now, list out all screen sessions by writing out the following command:

Here, the output will also give you information about the existing screen session, other than the newly created one.

One method of ending a session is to attach it first and then end it. We will follow this method in the upcoming section. We took “my_session_1” as an example, you can choose the session which you want to end.

Utilize the following command for checking related information about the “my_session_1” screen session.

Closing a Screen Session

Note the complete id of the screen session. After that, attach this screen session using the “-r” option in the screen command.

In your terminal, type “exit” to exit this screen session.

As you can see, the output declares that the process is terminated successfully.

Another method of ending a screen session is to press “CTRL+a” combined with the “\” key while a session is attached.

Conclusion

The screen multiplexes numerous interactive shells of the physical terminal. It also allows its user to execute multiple tasks in each terminal simultaneously. There comes a case where cleanup is required and for that, you want to end a screen session. In this post, we have discussed two distinct methods for ending a screen session.

About the author

Talha Saif Malik

Talha is a contributor at Linux Hint with a vision to bring value and do useful things for the world. He loves to read, write and speak about Linux, Data, Computers and Technology.

Источник

Оцените статью
Adblock
detector