Команда 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

Практика

  1. Подключите screen и запустите две различные команды в режиме screen-сессии, выйдите из любой сессии, затем вернитесь к этой же сессии.
  2. Разделите рабочее пространство на две части, затем - запустите в каждой свой процесс: 1 и 2. Разделите часть с процессом 2 еще на две части, причем в каждой должен выполняться процесс 2. Верните вновь одну часть, выполняющую процесс 2.

Полезные ресурсы

https://www.youtube.com/watch?v=I4xVn6Io5Nw - приятная визуализация написанного выше с подробным объяснением