Введение
Одно из главных требований к любому IT-специалисту, который должен иметь в своем рюкзаке множество soft skills, — это умение автоматизировать! Но не всегда технически продукт или технология позволяет это сделать и для этого есть утилиты, которые помогают автоматизировать задачи в нашем случае в Linux. Одно подключение — одна сессия, это несколько неудобно для использования, и для этого разработали утилиту screen.
Screen использует два основных компонента, облегчающих создание и управление виртуальными терминалами. Первый компонент — это терминальная сессия, которая выступает в качестве контейнера для нескольких виртуальных терминалов или же окон. Этот терминальный сеанс обрабатывает ввод и вывод данных для всех виртуальных терминалов, находящихся в нем.
Вторым важным компонентом является терминальный мультиплексор, который отвечает за управление различными аспектами работы виртуальных терминалов в рамках терминальной сессии. Он обрабатывает команды, связанные с переключением между окнами, и управляет виртуальными терминалами.
При создании нового окна в пределах экрана терминальный мультиплексор генерирует новый виртуальный терминал и инициирует процесс оболочки (например, bash) для этого окна. Каждый виртуальный терминал функционирует как самостоятельный процесс, управляя своим вводом и выводом, а также имея собственное окружение и рабочий каталог.
При отключении от экранной сессии терминальная сессия остается активной на сервере, а виртуальные терминалы продолжают работать в фоновом режиме. При повторном подключении доступ к виртуальным терминалам восстанавливается, а процессы, запущенные в них, сохраняются.
Таким образом, сочетание терминальной сессии и терминального мультиплексора позволяет программе screen обеспечить эффективную работу с несколькими процессами в одном окне терминала. Более того, он позволяет пользователям отключаться и впоследствии беспрепятственно возобновлять работу, что делает screen мощным и универсальным инструментом для эффективной работы с командной строкой в Linux.
Требования к установке
- Root—права;
- Ubuntu 16 или более поздняя версия;
- Некоторые знания о работе ОС;
- Подключение к Интернету.
Мы будем работать на сервере с Ubuntu 22.04, заказанному в Serverspace.
Установка и использование
Прежде всего, нам необходимо обновить и установить системные пакеты на нашей машине для корректной работы:
apt update && apt upgrade -y

После обновления системы необходимо установить пакет экранных утилит:
sudo apt-get install screen

Нажмите кнопку Y для запуска процесса установки и дождитесь его завершения. Это не займет много времени, наберитесь терпения.
Затем введите приведенную ниже команду:
screen

Нажмите клавишу Space или Return, чтобы пропустить всплывающее окно, после чего вы увидите новый чистый экран, утилита создала новую терминальную сессию, которая выглядит как контейнер для сохранения и управления виртуальным окном. Создадим терминал, у нас есть два типа разделения экрана: горизонтальный и вертикальный. Также можно разделить уже поделенный экран для более сложных задач. Все команды активны по комбинации Ctrl+a, давайте создадим новое окно и разделим экран, зажав комбинацию клавиш:
Ctrl+a+c
Ctrl+a+S

Напоминание! Для данной утилиты существует разница при использовании большого и малого регистра, запомните это. Мы можем переключать активное окно по комбинации:
Ctrl+a+Tab
И переключать нужный виртуальный терминал комбинацией для предыдущего и следующего окна соответственно:
Ctrl+a+n и Ctrl+a+p
Также можно вывести на экран список всех окон терминала:
Ctrl+"

Если вы хотите увидеть более краткую информацию, введите:
Ctrl+a+w

Для более наглядного использования этих окон можно изменить метку каждого окна, нажав кнопку:
Ctrl+a+Tab
Переключитесь на нужное окно и зажмите комбинацию клавиш:
Ctrl+a+A

В нашем примере в нижней строке отображается индекс и метка соответствия для данного окна. На экране видна вертикальная линия, разделенная командой:
Ctrl+a+|
Также можно выполнить более сложное деление, например, поделить правую область командой ниже:
Ctrl+a+S

В начале работы у вас не будет активного окна, выберите его, как описывали ранее:
Ctrl+a+p or n
Для уничтожения одного процесса используйте комбинацию:
Ctrl+a+k
Для всей связки виртуальных окон:
Ctrl+a+\
И согласитесь с вопросом в всплывающем окне. Но если вы хотите просто свернуть окно виртуального терминала, то нужно набрать:
Ctrl+a+Q
При этом комбинация сворачивает все окна, кроме основного с фокусом, можно также отсоединиться от терминала и закрыть соединение с сервером, но они все равно будут работать, по комбинации кнопок:
Ctrl+a+d
И снова прикрепляется путем поиска нужной строки:
screen -ls
И введите их ID в приведенную ниже команду:
screen -r 23505
Для получения дополнительной информации об использовании комбинации можно нажать кнопку :
Ctrl+a+?

Давайте представим реальный пример использования этой утилиты, конечно, мы можем автоматизировать и настроить множество рутинных или неудобных действий, например, нам нужно проверить свободное место на хранилище и создать резервную копию. Разделяем экран и с задержкой в 2 секунды наблюдаем за изменениями.

Вывод
Утилита screen в Linux предоставляет мощный и эффективный способ управления несколькими виртуальными терминалами в рамках одного терминального окна. Она состоит из двух основных компонентов—терминальной сессии, которая является контейнером для виртуальных терминалов, и терминального мультиплексора, отвечающего за управление этими терминалами. С помощью screen ИТ—специалисты могут оптимизировать свой рабочий процесс, создавая и организуя несколько терминалов, переключаясь между ними и даже разделяя экран для решения сложных задач.