Вы когда-нибудь сталкивались с ситуацией, когда выполняете долгосрочную задачу на удаленной машине, и внезапно ваше соединение разрывается, сеанс SSH прерывается, и ваша работа теряется. Ну, это случилось со всеми нами в какой-то момент, не так ли? К счастью, есть утилита под названием screen, которая позволяет нам возобновлять сеансы.

Вступление
Screen или GNU Screen — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким сессиям в рамках одной сессии. Это полезно для работы с несколькими программами из командной строки, а также для запуска программ на удаленном сервере.
Установка утилиты Screen
Пакет с утилитой screen уже установлен в большинстве дистрибутивов Linux. Вы можете проверить, установлен ли он в вашей системе, набрав:
$ screen --version
Вывод
Screen version 4.06.02 (GNU) 23-Oct-17
Если в вашей системе screen не установлен, вы можете легко установить его с помощью системы управления пакетами вашего дистрибутива.
Установка в Ubuntu и Debian
$ sudo apt install screen
Установка в Centos и Fedora
sudo yum install screen
Запуск утилиты Screen
Чтобы начать сеанс экрана, просто введите screen в консоли:
$ screen
Это откроет сеанс экрана, создаст новое окно и запустит оболочку в этом окне.
Теперь, когда вы открыли сеанс экрана, вы можете получить список команд, набрав:
Ctrl+a
?
Начало именованного сеанса
Именованные сеансы полезны при запуске нескольких сеансов экрана. Чтобы создать именованный сеанс, выполните команду screen со следующими аргументами:
$ screen -S session_name
Это всегда хорошая идея, чтобы выбрать описательное имя сеанса.
Работа с окнами
При запуске нового сеанса экрана по умолчанию создается одно окно с оболочкой.
Вы можете иметь несколько окон внутри сеанса экрана.
Для создания нового окна с оболочкойвведите Ctrl+a, ему будет присвоен первый доступный номер из диапазона от 0 до 9.
Ниже приведены некоторые наиболее распространенные команды для управления окнами в screen:
Ctrl+a
c
— Создать новое окно (с оболочкой)Ctrl+a
"
— Список всех оконCtrl+a
0
— Переключиться в окно 0 (по номеру)Ctrl+a
A
— Переименовать текущее окноCtrl+a
S
— Разделить текущую область по горизонтали на две областиCtrl+a
|
— Разделить текущую область по вертикали на две областиCtrl+a
tab
— Переключить фокус ввода на следующую областьCtrl+a
Ctrl+a
— Переключение между текущей и предыдущей областьюCtrl+a
Q
— Закрыть все области, кроме текущейCtrl+a
X
— Закрыть текущую область
Отсоединиться от сессии
Вы можете отсоединиться от сеанса экрана в любое время, набрав:
Ctrl+a d
Программа, запущенная в сеансе экрана, продолжит работу после отсоединения от сеанса.
Подключите к экрану
Чтобы возобновить сеанс экрана, используйте следующую команду:
$ screen -r
Если на вашем компьютере запущено несколько сеансов экрана, вам нужно добавить идентификатор сеанса экрана после переключателя r.
Чтобы найти идентификатор сеанса, перечислите текущие сеансы рабочего экрана:
$ screen -ls
Вывод
There are screens on:
10835.pts-0.fed (Detached)
10366.pts-0.fed (Detached)
2 Sockets in /run/screens/S-vanzhiganov.
Если вы хотите восстановить экран 10835.pts-0, введите следующую команду:
$ screen -r 10835
Настройка
Когда экран запускается, он считывает свои параметры конфигурации из /etc/screenrc и ~/.screenrc, если файл присутствует. Мы можем изменить настройки экрана по умолчанию в соответствии с нашими предпочтениями, используя файл .screenrc.
Вот пример конфигурации ~/.screenrc с настроенной строкой состояния и несколькими дополнительными опциями:
# Turn off the welcome message
startup_message off
# Disable visual bell
vbell off
# Set scrollback buffer to 10000
defscrollback 10000
# Customize the status line
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

Основное использование
Ниже приведены основные шаги для начала работы с экраном:
- В командной строке введите
screen
. - Запустите необходимую программу.
- Используйте последовательность клавиш
Ctrl-a
+Ctrl-d
для отключения от сессии экрана. - Присоедините экран к сеансу, набрав
screen -r
.
Заключение
Из этого урока вы узнали, как использовать GNU Screen. Теперь вы можете начать использовать утилиту Screen и создавать несколько окон экрана из одного сеанса, перемещаться между окнами, отсоединять и возобновлять сеансы экрана и персонализировать свой экранный терминал с помощью файла .screenrc.