
Screen – это терминальная мультиплексирующая утилита, позволяющая запускать несколько сеансов командной строки в одном окне терминала и управлять ими независимо. Она особенно полезна при работе с удалёнными серверами по SSH, так как позволяет возобновлять прерванные сессии без потери процессов.
Основные команды Screen включают создание нового сеанса с помощью screen -S имя_сессии, просмотр активных сеансов через screen -ls и подключение к существующему сеансу с screen -r имя_сессии. Для разделения сеанса на несколько окон используется комбинация клавиш Ctrl-A c, а переключение между окнами выполняется Ctrl-A n или Ctrl-A p.
Для удобства администрирования серверов полезно комбинировать Screen с автозапуском сеансов через скрипты и alias. Это позволяет быстро подключаться к нужной рабочей среде и управлять процессами без многократного ввода команд.
Screen в Ubuntu: как пользоваться утилитой на практике
Для создания нового сеанса Screen используется команда screen -S имя_сессии. После запуска открывается новое окно терминала, где можно выполнять команды независимо от других сеансов. Чтобы временно отсоединиться от сеанса и оставить процессы работающими, применяется Ctrl-A d. Повторное подключение выполняется командой screen -r имя_сессии.
Для управления окнами внутри сеанса используются сочетания клавиш: Ctrl-A c создаёт новое окно, Ctrl-A n переключается на следующее, Ctrl-A p возвращает к предыдущему. Переключение по номеру окна выполняется через Ctrl-A номер_окна. Для завершения окна достаточно ввести exit.
При работе с удалёнными серверами Screen обеспечивает непрерывность процессов. Долгие задачи, такие как компиляция или резервное копирование, можно запускать в отдельном сеансе и отсоединяться, не опасаясь прерывания из-за разрыва SSH-соединения. Одновременная работа с несколькими окнами и логирование упрощают мониторинг и контроль за выполнением команд.
Установка и запуск Screen в Ubuntu
Для установки Screen в Ubuntu используется пакетный менеджер APT. Выполните команду:
sudo apt update && sudo apt install screen
После установки проверка версии утилиты осуществляется командой:
screen —version
Запуск нового сеанса выполняется с указанием имени для удобного управления:
screen -S имя_сессии
Основные команды для управления сеансами и окнами удобно оформить в виде таблицы:
| Команда | Описание |
|---|---|
| screen -S имя_сессии | Создание нового сеанса с указанным именем |
| screen -ls | Просмотр всех активных сеансов |
| screen -r имя_сессии | Повторное подключение к существующему сеансу |
| Ctrl-A d | Отсоединение от текущего сеанса без остановки процессов |
| Ctrl-A c | Создание нового окна внутри сеанса |
| Ctrl-A n / Ctrl-A p | Переключение на следующее или предыдущее окно |
| screen -L | Включение логирования текущего сеанса в файл screenlog.n |
После запуска сеанса можно выполнять команды в отдельных окнах, отсоединяться и повторно подключаться, обеспечивая непрерывность работы процессов даже при закрытии терминала или разрыве SSH-соединения.
Создание и переключение между сессиями Screen
Создание новой сессии Screen осуществляется командой:
screen -S имя_сессии
Рекомендуется давать понятные имена, чтобы быстро идентифицировать сеанс при последующих подключениях. Для просмотра всех активных сессий используется:
screen -ls
Подключение к конкретной сессии выполняется командой:
screen -r имя_сессии
Если сеанс уже отсоединён, повторное подключение восстановит его текущее состояние. Для отсоединения без завершения процессов применяется Ctrl-A d.
Управление окнами внутри одной сессии:
- Ctrl-A c – создать новое окно.
- Ctrl-A n – переключение на следующее окно.
- Ctrl-A p – переключение на предыдущее окно.
- Ctrl-A номер_окна – мгновенный переход к окну с указанным номером.
- exit – закрытие текущего окна.
Для одновременного управления несколькими сеансами удобно вести их логирование через screen -L и использовать alias для быстрого запуска часто используемых сеансов. Такой подход упрощает мониторинг процессов и предотвращает потерю данных при разрыве соединения.
Подключение к уже существующей сессии
Для просмотра всех активных сессий Screen используется команда:
screen -ls
screen -r имя_сессии или screen -r ID_сессии
Если сессия отсоединена и занята другим подключением, можно использовать screen -x имя_сессии для совместного доступа к сеансу несколькими терминалами. Это удобно при удалённом администрировании и совместной работе над процессами.
После подключения все окна сеанса сохраняют своё состояние, включая выполняющиеся команды и открытые процессы. Для выхода из сеанса без его завершения применяется комбинация Ctrl-A d, что позволяет отсоединяться и подключаться повторно без потери данных.
Для ускорения повторного подключения рекомендуется использовать alias в ~/.bashrc, например: alias screenproj=»screen -r имя_сессии», чтобы запускать нужный сеанс одной командой.
Разделение окна на несколько панелей
Screen позволяет разделять одно окно терминала на несколько панелей для одновременного наблюдения за различными процессами. Для горизонтального разделения используется комбинация Ctrl-A S, для вертикального – Ctrl-A |.
Переключение между панелями выполняется командой Ctrl-A Tab. Каждая панель работает как отдельное окно терминала, где можно запускать команды независимо от других панелей.
Закрытие активной панели осуществляется комбинацией Ctrl-A X. Для обновления содержимого всех панелей применяется Ctrl-A Ctrl-L, что полезно при искажении отображения после изменения размера окна терминала.
Рекомендуется использовать разделение окон при наблюдении за долгими процессами или мониторингом логов в реальном времени, чтобы видеть несколько источников информации одновременно, не создавая отдельные сеансы Screen для каждого процесса.
Отсоединение сессии и работа в фоне
Для отсоединения от активного сеанса Screen без остановки выполняющихся процессов используется комбинация клавиш Ctrl-A d. После этого терминал возвращается в обычное состояние, а процессы продолжают работу в фоне.
Просмотр всех отсоединённых и активных сессий выполняется командой screen -ls. Повторное подключение к сеансу осуществляется через screen -r имя_сессии или screen -r ID_сессии.
Работа в фоне особенно полезна для долгих задач, таких как компиляция, резервное копирование или загрузка больших файлов. Даже при закрытии SSH-соединения процессы продолжат выполняться, что исключает потерю данных и необходимость перезапуска команд.
Для автоматизации удобно использовать alias и скрипты запуска, чтобы быстро отсоединяться и повторно подключаться к нужным сеансам. Также рекомендуется включать логирование с помощью screen -L, чтобы отслеживать результаты выполнения процессов без постоянного подключения к терминалу.
Просмотр списка активных сессий и управление ими

There are screens on:
1234.my_session (Detached)
5678.test (Attached)
Статус Detached означает, что сессия запущена в фоне и не привязана к терминалу, а Attached – сессия активна в текущем терминале.
Для подключения к существующей сессии применяется screen -r [ID] или screen -r [имя_сессии]. Если сессий несколько, необходимо указать полный идентификатор или имя.
Для завершения сессии внутри неё используется сочетание клавиш Ctrl+A затем K, подтверждаем удаление сессии клавишей y. Также сессию можно завершить из терминала командой screen -S [ID] -X quit.
В случае, если сессия привязана к другому терминалу и требуется принудительное подключение, используется screen -d -r [ID]. Это отсоединяет сессию от текущего терминала и подключает её к вашему.
Для удобства управления сессиями рекомендуется присваивать имена при создании, например: screen -S my_session. Это упрощает идентификацию и подключение к нужной сессии при множестве запущенных процессов.
Завершение сессий и сохранение прогресса
Screen позволяет безопасно завершать сессии и сохранять рабочий прогресс для последующего восстановления. Основные методы управления сессиями включают:
- Завершение сессии внутри терминала: сочетание клавиш
Ctrl+A, затемK. Система запросит подтверждение, после чего процессы внутри сессии будут остановлены. - Прямое завершение сессии из другого терминала:
screen -S [ID или имя] -X quit. Используется, когда сессия недоступна для прямого управления. - Сохранение прогресса при отключении: сессия может быть «отсоединена» с помощью
Ctrl+AзатемD. Все процессы продолжают выполняться, а повторное подключение возможно черезscreen -r [ID]. - Принудительное отсоединение и подключение:
screen -d -r [ID]отключает сессию от текущего терминала и подключает её к вашему, сохраняя состояние всех процессов. - Использование именованных сессий:
screen -S имя_сессииоблегчает идентификацию нужной сессии при повторном подключении.
Для долговременной работы сессий рекомендуется всегда отсоединять их вместо завершения, если требуется сохранить выполняющиеся задачи и логи, что предотвращает потерю данных при закрытии терминала.
Вопрос-ответ:
Как создать новую сессию в Screen и дать ей имя?
Для создания сессии с именем используется команда screen -S имя_сессии. Это позволяет легко идентифицировать её среди других сессий. После запуска сессии в ней можно выполнять любые команды, а при необходимости отсоединить её сочетанием клавиш Ctrl+A затем D для продолжения работы позже.
Как просмотреть все активные сессии и подключиться к нужной?
Команда screen -ls выводит список всех текущих сессий с их идентификаторами и статусом (Attached или Detached). Для подключения к конкретной сессии используется screen -r [ID или имя]. Если сессия активна в другом терминале, можно использовать screen -d -r [ID] для принудительного подключения и отсоединения сессии от предыдущего терминала.
Как безопасно завершить сессию, сохранив прогресс работы процессов?
Вместо завершения сессии её можно отсоединить с помощью Ctrl+A затем D. Процессы продолжат работу в фоне, а вы сможете подключиться к сессии позже через screen -r [ID]. Если требуется полностью завершить сессию, используется Ctrl+A затем K с подтверждением, либо команда screen -S [ID] -X quit из другого терминала.
Можно ли управлять несколькими сессиями одновременно?
Да, Screen позволяет работать с несколькими сессиями одновременно. Каждой сессии можно присвоить уникальное имя для удобного идентифицирования. С помощью screen -ls можно получить список всех сессий, а команды screen -r [ID] и screen -d -r [ID] позволяют подключаться к нужной сессии без прерывания других.
