Screen – это программа, которая держит ваши команды запущенными, даже когда вы отключились от сервера. Обычно, если закрыть окно SSH или пропадёт интернет, всё запущенное в терминале останавливается. Внутри Screen процесс продолжит работать, а вы сможете вернуться к нему позже с любого устройства.
Screen пригодится, когда нужно запустить долгую задачу, например обновление системы, резервное копирование или Telegram-бота, а также чтобы держать несколько терминалов в одном подключении.
Установка
# Устанавливаем Screen из стандартного репозитория
apt-get install -y screen# Screen находится в репозитории EPEL, сначала подключаем его
dnf install -y epel-release
# Устанавливаем Screen
dnf install -y screenПроверить, что всё установилось, можно командой screen --version.
Как устроено управление
Внутри Screen все действия выполняются сочетаниями клавиш, и каждое начинается с Ctrl + A. Сначала нажмите Ctrl + A, отпустите обе клавиши и только потом нажмите нужную букву. Например, «Ctrl + A, затем d» отключает от сессии.
Регистр букв важен
Заглавная и строчная буква дают разные команды. Например, Ctrl + A, затем Shift + S делит экран.
Строчная s замораживает вывод в окне.
Если окно перестало реагировать, нажмите Ctrl + A, затем q. Следите за раскладкой и Caps Lock.
1. Создайте сессию
Запустите Screen и сразу дайте сессии понятное имя, чтобы потом легко её найти.
# Создаём сессию с именем backup
screen -S backupОткроется чистый терминал, это уже окно внутри Screen. Запустите в нём нужную команду. В нашем примере это ping, который будет работать, пока его не остановят.

Команда работает внутри сессии backup
2. Отключитесь от сессии
Нажмите Ctrl + A, затем d. Вы вернётесь в обычный терминал и увидите сообщение вида [detached from 5084.backup].
Команда внутри сессии при этом продолжает работать. Теперь можно спокойно закрыть SSH и выключить компьютер.
3. Посмотрите список сессий
# Показываем все сессии Screen на сервере
screen -ls
Отключение от сессии и список сессий
В списке видно номер и имя сессии, например 5084.backup, время её создания и состояние:
- Detached – к сессии сейчас никто не подключён, она работает в фоне;
- Attached – к сессии кто-то подключён прямо сейчас.
4. Вернитесь в сессию
# Подключаемся к сессии backup
screen -r backupОткроется то же окно, где вы остановились, и команда будет работать дальше, как ни в чём не бывало. Если сессия одна, имя можно не указывать, хватит screen -r.
Если вы уже подключены к сессии из другого окна, например связь оборвалась и старое подключение «зависло», используйте команду ниже.
# Отключаем сессию от старого подключения и подключаемся заново
screen -d -r backupА чтобы смотреть в одну сессию сразу из двух мест, например вдвоём с коллегой, подключитесь командой screen -x backup.
5. Работайте с несколькими окнами
В одной сессии можно держать несколько окон и переключаться между ними, как между вкладками.
- Ctrl + A, затем c – создать новое окно.
- Ctrl + A, затем Shift + A – переименовать текущее окно.
- Ctrl + A, затем " – открыть список окон. Выберите окно стрелками и нажмите Enter.
- Ctrl + A, затем n или p – следующее или предыдущее окно.
- Ctrl + A, затем цифра от 0 до 9 – перейти к окну с этим номером.
- Ctrl + A, затем k – закрыть текущее окно.

Список окон в одной сессии
6. Разделите экран
Screen умеет показывать несколько окон одновременно. Например, слева идёт долгая команда, а справа видна нагрузка на сервер.
- Нажмите Ctrl + A, затем |, чтобы разделить экран по вертикали, или Ctrl + A, затем Shift + S, чтобы разделить по горизонтали.
- Перейдите в новую половину сочетанием Ctrl + A, затем Tab.
- Новая половина пустая. Откройте в ней окно, нажав Ctrl + A и цифру окна, или создайте новое через Ctrl + A, затем c.

Слева работает ping, справа top
Закрыть текущую половину можно сочетанием Ctrl + A, затем Shift + X.
Оставить только её можно сочетанием Ctrl + A, затем Shift + Q.
Сами окна при этом не закрываются.
7. Завершите сессию
Когда задача выполнена, закройте все окна командой exit, и сессия завершится сама. Завершить сессию целиком можно и снаружи, не подключаясь к ней.
# Закрываем сессию backup вместе со всеми её окнами
screen -S backup -X quitПолезные приёмы
Запуск сразу в фоне
Чтобы запустить команду в Screen и не заходить в сессию, используйте ключи -dm. Так удобно запускать ботов и скрипты.
# Создаём сессию bot и запускаем в ней скрипт, не подключаясь к ней
screen -dmS bot python3 bot.pyПрокрутка вверх
Колёсико мыши внутри Screen обычно не листает историю. Нажмите Ctrl + A, затем [, и листайте клавишами PgUp и PgDn или стрелками. Выйти из режима прокрутки можно клавишей Esc.
Запись вывода в файл
Если запустить Screen с ключом -L, всё, что появляется в окне, будет сохраняться в файл screenlog.0 в текущей папке.
Шпаргалка
| Команда | Что делает |
|---|---|
screen -S имя | Создать сессию с именем |
screen -ls | Показать все сессии |
screen -r имя | Вернуться в сессию |
screen -d -r имя | Забрать сессию у старого подключения |
screen -x имя | Подключиться к сессии вдвоём |
screen -dmS имя команда | Запустить команду в фоновой сессии |
screen -S имя -X quit | Завершить сессию |
| Ctrl + A, d | Отключиться, не останавливая команды |
| Ctrl + A, c | Новое окно |
| Ctrl + A, " | Список окон |
| Ctrl + A, n / p | Следующее и предыдущее окно |
| Ctrl + A, | / Shift + S | Разделить экран |
| Ctrl + A, Tab | Перейти в другую часть экрана |
| Ctrl + A, [ | Прокрутка истории |
| Ctrl + A, ? | Справка по всем сочетаниям |
Частые вопросы
Пишет «There is no screen to be resumed matching»
Сессии с таким именем нет. Проверьте точное имя командой screen -ls. Если в списке пусто, сессия уже завершилась, например потому что команда в ней закончила работу или сервер перезагружался.
Сессия в списке есть, но screen -r не подключается
Если рядом с сессией написано Attached, к ней уже подключено другое окно, часто это старое оборвавшееся подключение. Подключитесь командой screen -d -r имя, она отключит старое окно и откроет сессию у вас.
Сохранятся ли сессии после перезагрузки сервера?
Нет. При перезагрузке все сессии Screen и запущенные в них команды останавливаются. Для программ, которые должны работать постоянно и сами запускаться после перезагрузки, лучше настроить службу systemd.
Ctrl + A в командной строке больше не переносит курсор в начало
Screen перехватывает это сочетание. Чтобы отправить само Ctrl + A программе внутри окна, нажмите Ctrl + A, затем a.
Чем Screen отличается от tmux?
Обе программы решают одну задачу. Screen проще и знаком многим администраторам.
tmux новее и гибче в настройке.
Для того чтобы команда не останавливалась после отключения от SSH, хватит любой из них.
Наши ресурсы
Telegram-канал: https://t.me/f3cloud_news
Сайт хостинга: https://f3cloud.com