screen: команды, которые не умирают вместе с SSH-сессией

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

5 октября 2026 г.·4 мин чтения·screen, tmux, ssh, linux

Закрыли окно 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, хватит любого из них.