screen: команды, которые не умирают вместе с SSH-сессией
Как запустить долгую задачу в screen, отключиться, вернуться с другого устройства, работать с несколькими окнами и когда вместо screen нужен systemd. Ubuntu, Debian, AlmaLinux.

Закрыли окно SSH или пропал интернет — всё, что работало в терминале, остановилось. Обновление системы на середине, бэкап на половине, бот выключен. screen решает это: процесс внутри него живёт независимо от вашего подключения, а вернуться к нему можно позже с любого устройства. Второе применение — несколько терминалов в одном подключении.
Если сервера ещё нет, VPS на tanaka.host создаётся за минуту с Ubuntu или Debian, а списание идёт по дням — удобно, чтобы просто попробовать.
Установка
Ubuntu и Debian:
apt-get install -y screen
AlmaLinux, Rocky, CentOS Stream — пакет в EPEL:
dnf install -y epel-release
dnf install -y screen
Проверка: screen --version.
Как устроено управление
Все действия внутри screen — сочетания, которые начинаются с Ctrl+A. Нажмите, отпустите обе клавиши, потом нажмите нужную букву. «Ctrl+A, затем d» — отключиться от сессии.
Регистр важен. Ctrl+A, Shift+S делит экран, а строчная s замораживает вывод в окне. Если окно перестало реагировать — Ctrl+A, затем q. Следите за раскладкой и Caps Lock.
1. Создайте сессию
Сразу с именем, чтобы потом найти:
screen -S backup
Откроется чистый терминал — это окно внутри screen. Запустите в нём нужную команду, например apt upgrade или скрипт бэкапа.
2. Отключитесь
Ctrl+A, затем d. Вы вернётесь в обычный терминал с сообщением вида [detached from 5084.backup]. Команда внутри продолжает работать — можно закрывать SSH и выключать ноутбук.
3. Список сессий
screen -ls
В списке — номер и имя (5084.backup), время создания и состояние: Detached — никто не подключён, работает в фоне; Attached — кто-то подключён прямо сейчас.
4. Вернитесь в сессию
screen -r backup
Если сессия одна, имя можно не писать: screen -r. Если связь оборвалась и старое подключение «зависло» в состоянии Attached — заберите сессию:
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. Разделите экран
Слева долгая команда, справа htop — screen умеет показывать несколько окон одновременно.
- Ctrl+A, | — разделить по вертикали; Ctrl+A, Shift+S — по горизонтали.
- Ctrl+A, Tab — перейти в другую половину.
- Новая половина пустая: откройте в ней окно по номеру (Ctrl+A, цифра) или создайте новое (Ctrl+A, c).
- Ctrl+A, Shift+X закрывает текущую половину, Shift+Q оставляет только её. Окна при этом живы.
7. Завершите сессию
Закройте все окна командой exit — сессия завершится сама. Снаружи, не подключаясь:
screen -S backup -X quit
Полезные приёмы
Запуск сразу в фоне, без входа в сессию — удобно для скриптов:
screen -dmS bot python3 bot.py
Прокрутка. Колёсико мыши внутри screen историю обычно не листает. Ctrl+A, [, затем PgUp/PgDn или стрелки, выход — Esc.
Запись вывода в файл. Ключ -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, ? | Справка по всем сочетаниям |
Частые ошибки
There is no screen to be resumed matching. Сессии с таким именем нет — проверьте screen -ls. Пустой список означает, что сессия завершилась: команда закончила работу или сервер перезагружался.
Сессия есть, но screen -r не подключается. Рядом написано Attached — старое оборвавшееся подключение. screen -d -r имя.
После перезагрузки сессии пропали. Так и должно быть: screen не переживает перезагрузку. Программа, которая должна работать всегда и подниматься сама, — это служба systemd, а не screen.
Ctrl+A больше не переносит курсор в начало строки. screen перехватывает сочетание. Чтобы передать его программе внутри: Ctrl+A, затем a.
screen или tmux
Задачу решают оба. screen проще и стоит почти везде; tmux новее, гибче в настройке и удобнее в разделении экрана. Если в системе уже есть tmux — базовые команды похожи: tmux new -s имя, Ctrl+B, d для отключения, tmux attach -t имя для возврата. Чтобы команда пережила разрыв SSH, хватит любого из них.