Команда screen в Linux
Содержание
Теория
В данной лабораторной работе рассматривается утилита screen, принцип ее действия и функционал.
Необходимо заметить, что screen напрямую относится к протоколу SSH.
Говоря простым языком, SSH – набор программ, которые позволяют регистрироваться на компьютере по сети, удаленно выполнять на нем команды, а также копировать и перемещать файлы между компьютерами. Также SSH организует защищенное безопасное соединение поверх небезопасных каналов связи. Использование SSH подключения имеет ряд преимуществ:
- Безопасная работа на удаленном ПК с использованием командной оболочки;
- Использование разных алгоритмов шифрования (симметричного, асимметричного и хеширования);
- Возможность безопасного использования любого сетевого протокола, что позволяет передавать по защищенному каналу файлы любого размера.
Итак, screen – консольная утилита позволяющая в действующей SSH-сессии открывать неограниченное количество независимых виртуальных терминалов (окон). Процессы, выполняемые внутри screen, не прерываются даже при обрыве сессии с сервером. Таким образом, процесс, запущенный внутри сессии через screen, будет продолжаться даже тогда, когда вы отключитесь от самой первой сессии.
Одним из основных применений этой утилиты является момент, когда необходимо производить сборку/установку ПО и мониторить дисковое пространство или использовать аппаратные ресурсы: screen может разделять текущий терминал на меньшее количество окон с возможностью запуска в них того же или других терминалов. Это ещё больше упрощает вышеописанную задачу, особенно при использовании больших мониторов. Также к одной сессии screen может подключаться несколько пользователей, и важно отметить, что во многих командах эта утилита используется при обучении персонала.
Установка screen в Linux
Вообще, пакет screen предустановлен на большинстве современных Linux - дистров. Проверить можно командой:
screen --version
Если его нет - это можно быстро исправить простой установкой.
В зависимости от дистрибутива, который вы используете:
- Установка screen в Ubuntu и Debian:
apt install screen
- Установка screen в Centos и Fedora:
yum install screen
Запуск screen в Linux
Чтобы запустить screen в консоли, нужно набрать screen
:
screen
Откроется новая сессия в новом окне и появится приветственное сообщение:

Для его закрытия нужно нажать Space
или Enter
.
Уже здесь можно вводить все нужные команды. Находясь в режиме скрина (screen) можно посмотреть список доступных вам команд управления этим режимом:
Ctrl+a и ?

Для удобства в ходе работы каждому процессу можно дать свое имя:
screen -S имя_окна
Основные команды screen в Linux
Ниже приведен список наиболее востребованных команд при работе со 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
Однако это откроет последнюю закрытую сессию.
Для того, чтобы вернуться к какой-то конкретно сессии, нужно воспользоваться ее ID. Узнать ID можно через команду screen -ls
:
screen -ls
There are screens on:
11111.ochen_vazhnaya_rabota_1 (Detached)
22222.ochen_vazhnaya_rabota_2 (Detached)
2 Sockets in /var/run/screen/S-root.
Итак, здесь можно увидеть ID каждой из сессий. Чтобы вернуться к какой-то из них, нужно использовать следующую команду:
screen -r нужный_ID
Таким образом, чтобы заново открыть сессию 1, надо ввести 11111; сессию 2 - 22222.
Кастомизация screen в Linux
Существует возможность перенастроить предпочтения использования screen и сделать это в файле .screenrc.
:
# Выключаем приветствие
startup_message off
# включаем визуальный звонок
vbell off
# буфер для сохраненных строк делаем 10000
defscrollback 10000
Практика
- Подключите screen и запустите две различные команды в режиме screen-сессии, выйдите из любой сессии, затем вернитесь к этой же сессии.
- Разделите рабочее пространство на две части, затем - запустите в каждой свой процесс: 1 и 2. Разделите часть с процессом 2 еще на две части, причем в каждой должен выполняться процесс 2. Верните вновь одну часть, выполняющую процесс 2.
Полезные ресурсы
https://www.youtube.com/watch?v=I4xVn6Io5Nw - приятная визуализация написанного выше с подробным объяснением