Как пользоваться screen и tmux в Linux: команды

Как пользоваться screen в Linux и не терять процессы

Марина
Марина
📅 30 сентября 2026
Как пользоваться screen в Linux и не терять процессы

Когда SSH-соединение рвётся, все запущенные в терминале программы получают сигнал SIGHUP («отбой») и завершаются вместе с сессией — обрывается копирование базы, сборка проекта, длинный импорт. Лечится это мультиплексором терминала: screen или tmux запускают ваши команды в отдельной сессии на стороне сервера, которая живёт независимо от подключения. Вы отцепляетесь двумя клавишами, закрываете ноутбук, а через час возвращаетесь к тому же экрану с продолжающимся процессом. Оба пакета есть в репозиториях любого VPS с Ubuntu и ставятся одной командой без настройки. Репозиторий — это официальное хранилище программ дистрибутива, откуда система скачивает пакеты.

Материал рассчитан на того, кто уже подключается к серверу по SSH, но запускает всё «в лоб» и теряет результат при каждом обрыве Wi-Fi. Разберём минимальный набор команд для screen и tmux, отличия между ними и деление экрана на панели. Затем посмотрим альтернативы — nohup и systemd-юнит — и типовые ошибки вроде «There is no screen to be resumed».

Почему процессы умирают, когда рвётся SSH-соединение

Каждая программа в терминале привязана к управляющему терминалу — каналу, через который она получает ввод и отдаёт вывод. Когда SSH-соединение обрывается, серверный демон sshd закрывает канал и рассылает дочерним процессам сигнал SIGHUP. Демон — это фоновая программа-служба: у неё нет окна и она работает постоянно, обслуживая входящие запросы. Название расшифровывается как hangup, «повесить трубку»: термин остался со времён модемов.

По умолчанию SIGHUP убивает процесс: программа не обязана его обрабатывать, и почти ни одна консольная утилита этого не делает. Поэтому многочасовое копирование 200 ГБ утилитой rsync или установка зависимостей, идущая 15 минут, прекращаются ровно в тот момент, когда у вас переключился мобильный интернет или уснул ноутбук. Хуже того, процесс может умереть на середине записи файла и оставить повреждённые данные — например, недокачанный дамп базы, который выглядит целым, пока вы не попробуете его развернуть.

Проверить, что осталось живо после обрыва, помогает команда ps aux — она выводит список всех процессов системы, а чтение её вывода разобрано в материале про просмотр процессов в Linux. Мультиплексор снимает проблему: сессия screen или tmux не привязана к вашему SSH-подключению, поэтому SIGHUP до неё не доходит.

Что такое мультиплексор терминала и чем он отличается от nohup

Мультиплексор — это программа, которая создаёт на сервере виртуальный терминал и держит его открытым сама. Ваш SSH-клиент лишь «подглядывает» в этот терминал и рисует картинку. Отключились — картинка пропала, терминал остался. Подключились снова — прицепились к тому же терминалу и увидели вывод команды за всё время отсутствия.

Screen появился в 1987 году и входит в базовые репозитории почти всех дистрибутивов. Tmux вышел в 2007 году и умеет больше: делит окно на панели, хранит настройки в понятном конфиге, показывает статусную строку. Задачу они решают одну, поэтому держите на сервере что-то одно.

Есть более простой вариант: nohup. Эта команда запускает программу, заранее отключив ей реакцию на SIGHUP, и перенаправляет вывод в файл nohup.out. Разница принципиальна: nohup даёт запустить и забыть, а мультиплексор даёт вернуться и посмотреть. Если процессу нужно задать вопрос («перезаписать файл? y/n») или вы хотите видеть прогресс-бар — нужен screen или tmux. Если команда полностью автономна и её вывод не жалко читать из лога — хватит nohup.

Установка screen и tmux на Ubuntu, Debian и AlmaLinux

Обе программы занимают меньше 1 МБ и есть в стандартных репозиториях, поэтому подключать сторонние источники не нужно. Ставим под пользователем с правами администратора: sudo означает «выполнить от имени root», то есть от суперпользователя системы.

# Ubuntu и Debian: обновляем список пакетов и ставим оба мультиплексора
sudo apt update
sudo apt install -y screen tmux

# AlmaLinux, Rocky Linux, CentOS Stream
sudo dnf install -y screen tmux

Флаг -y отвечает «да» на вопрос о подтверждении установки, чтобы команда отработала без вашего участия. После установки проверьте версии — так вы убедитесь, что исполняемые файлы на месте и запускаются:

screen --version
tmux -V

На большинстве образов Ubuntu 22.04 и 24.04 screen уже предустановлен, а tmux — нет. Если вы только развернули машину и ещё не проходили базовую настройку, посмотрите наш чеклист по настройке VPS с нуля: там про обновления, пользователей и firewall. Отдельно стоит сразу перейти на вход по SSH-ключу вместо пароля — при частых переподключениях это экономит время и снимает риск подбора пароля.

Screen: как пользоваться — четыре команды, которых хватает на всё

Работа со screen строится вокруг одной управляющей комбинации — Ctrl+A. Она сама по себе ничего не делает, а лишь сообщает программе: следующая клавиша адресована не запущенному приложению, а самому screen. Поэтому все действия выглядят как «Ctrl+A, отпустить, нажать вторую клавишу».

Именованные сессии — обязательная привычка. Безымянная получает номер вида 12345.pts-0.srv, а через неделю таких наберётся пять штук.

Первый запуск выглядит так:

  1. Подключитесь к серверу по SSH обычным способом.
  2. Создайте именованную сессию: screen -S work. Экран очистится — вы уже внутри.
  3. Запустите долгую команду, например rsync -av /var/www /backup — она копирует каталог сайта в каталог резервных копий, сохраняя права и показывая имена файлов. Убедитесь, что пошёл вывод.
  4. Отцепитесь: нажмите Ctrl+A, отпустите, нажмите D. Появится строка [detached from 12345.work].
  5. Закройте SSH командой exit — процесс внутри сессии продолжит работу.
  6. Подключитесь заново и посмотрите список сессий: screen -ls.
  7. Вернитесь в сессию: screen -r work. Вы увидите весь вывод, накопившийся за время отсутствия.

После работы сессию закрывают, иначе она провисит месяцами. Наберите внутри неё exit или нажмите Ctrl+D — screen завершится, когда закроется последнее окно. Пустой screen -ls выводит строку No Sockets found.

Сессия screen на сервере: отцепление двумя клавишами и возврат
Сессия мультиплексора живёт на сервере отдельно от подключения, поэтому сигнал разрыва при обрыве связи до неё не доходит.

Tmux: как пользоваться — те же действия, другая управляющая клавиша

Логика tmux повторяет screen, но управляющая комбинация другая — Ctrl+B. Разработчики сменили её намеренно: Ctrl+A в командной строке bash перемещает курсор в начало строки, и screen это привычное сочетание перехватывает. Tmux оставляет Ctrl+A вашей оболочке.

Команды снаружи сессии пишутся словами, а не флагами: tmux new, tmux attach, tmux ls читаются как английские фразы и не требуют помнить, что -r значит resume.

# создать именованную сессию work
tmux new -s work

# отцепиться: Ctrl+B, отпустить, затем D

# посмотреть список живых сессий
tmux ls

# вернуться в сессию work
tmux attach -t work

# завершить сессию снаружи, если внутрь заходить не нужно
tmux kill-session -t work

Флаг -s задаёт имя новой сессии (от session), -t указывает, к какой сессии относится команда (от target). Вывод tmux ls выглядит как строка work: 3 windows (created Thu Sep 4 11:20:14 2026) — видно имя, число окон и время создания. Если сессия открыта в другом терминале, в конце появится пометка (attached).

Внизу экрана tmux рисует статусную строку: слева список окон, справа имя хоста и часы. В screen такой индикации нет, и понять, внутри вы сессии или снаружи, можно только по памяти.

Панели и окна: как разделить экран в tmux

Окно в tmux — это полноэкранная вкладка, панель — часть окна. Панели удобны, когда нужно одновременно видеть две вещи: слева работающий сервер приложения, справа tail -f по логу. Раньше для этого открывали два SSH-подключения, теперь хватает одного.

Делится окно двумя сочетаниями. Ctrl+B и затем % режет окно вертикальной линией — панели встают рядом. Ctrl+B и затем кавычка " режет горизонтально — панели встают одна над другой. Переключение между панелями — Ctrl+B и стрелка в нужную сторону. Закрывается панель обычным exit, и оставшиеся автоматически растягиваются на освободившееся место.

Стандартный терминал — это 80 символов в ширину и 24 строки в высоту. Делить его больше чем на три панели бессмысленно: уже при трёх на каждую приходится по 8 строк, и вывод команды в них не помещается. Практичный максимум — 2 панели на окно и несколько окон: новое окно создаётся сочетанием Ctrl+B и C (create), переключение между ними — Ctrl+B и номер окна от 0 до 9.

Screen тоже умеет делить экран, но реализация неудобная: разделение не сохраняется при отцеплении сессии, и после screen -r вы увидите одну панель вместо двух. Если деление экрана для вас важно, выбирайте tmux сразу.

Screen против tmux: таблица сочетаний и различий

Ниже — минимум, который стоит выписать на бумажку и держать рядом первую неделю. Через десяток подключений руки запомнят комбинации сами.

Обратите внимание: команды в первой колонке набираются в обычной командной строке, а сочетания клавиш работают только внутри уже запущенной сессии.

Действие screen tmux
Создать именованную сессию screen -S work tmux new -s work
Отцепиться от сессии Ctrl+A, затем D Ctrl+B, затем D
Список сессий screen -ls tmux ls
Вернуться в сессию screen -r work tmux attach -t work
Новое окно внутри сессии Ctrl+A, затем C Ctrl+B, затем C
Разделить экран по вертикали не сохраняется при detach Ctrl+B, затем %
Разделить экран по горизонтали не сохраняется при detach Ctrl+B, затем «
Год первого релиза 1987 2007

Новичку я советую tmux: статусная строка сразу показывает, где вы находитесь, панели работают предсказуемо, а настройки в файле ~/.tmux.conf читаются без документации. Screen оправдан в двух случаях — если он единственный, что стоит на чужом сервере, и если вы работаете с последовательным портом железки, здесь у него исторически лучше поддержка.

Шпаргалка по командам screen и tmux: сессии, отцепление и панели
Управляющие сочетания различаются не случайно: screen перехватывает Ctrl+A, которым командная строка переводит курсор в начало.

Когда достаточно nohup, а когда нужен systemd-юнит

Мультиплексор — инструмент для интерактивной работы руками. Для двух соседних задач есть решения лучше, и путать их не стоит: иначе после перезагрузки сервера «постоянно работающий» скрипт исчезнет вместе с сессией.

Первый случай — одна автономная команда, за которой не надо следить. Здесь достаточно nohup: символ & в конце отправляет процесс в фоновый режим, а nohup защищает его от SIGHUP. Весь вывод при этом уходит в файл.

# запустить скрипт в фоне и защитить от обрыва сессии
nohup python3 /opt/import.py &

# посмотреть, что он пишет, в реальном времени
tail -f nohup.out

Второй случай — служба, которая должна подниматься после перезагрузки: телеграм-бот, веб-приложение, игровой сервер. Ни screen, ни nohup такого не дают — после reboot процесс не запустится. Нужен systemd-юнит: файл-описание службы, который система читает при старте, сама поднимает программу и перезапускает её при падении. Вечная сессия screen для бота — частая ошибка, и обнаруживается она через месяц, при плановой перезагрузке хоста.

Простой критерий выбора: нужен ли ввод с клавиатуры внутри процесса. Интерактивная миграция базы, распаковка с вопросами, ручное тестирование — только мультиплексор.

Сколько ресурсов ест мультиплексор и на каком сервере его держать

Расход ресурсов символический: пустая сессия занимает 2–4 МБ оперативной памяти и не нагружает процессор, пока в ней ничего не выполняется. Фактическое потребление показывает утилита htop, если отсортировать список по колонке RES — в ней указана реально занятая процессом оперативная память. Нагрузку создаёт не мультиплексор, а то, что вы в нём запустили.

Вывод простой: под screen и tmux отдельный тариф не нужен. Подойдёт любая машина, где вы и так работаете, включая бюджетные конфигурации с 1 ядром и 1 ГБ памяти. В каталоге 44 площадки. У нижней границы цены выглядят так.

Провайдер Стартовая цена Конфигурация начального тарифа
Cloudcore от 59 ₽/мес 1 ядро, 1 ГБ RAM, 10 ГБ NVMe
Hosting-Russia от 99 ₽/мес стартовая конфигурация с 1 ядром
4VPS от 110 ₽/мес 1 ядро, 1 ГБ RAM, 5 ГБ NVMe
HostVDS от 127 ₽/мес 1 ядро, 1 ГБ RAM, 10 ГБ NVMe

Данные проверены 04.09.2026.

Подумать заранее стоит только о диске. Буфер прокрутки tmux хранит 2000 строк на панель — это единицы мегабайт, а логи долгих задач в nohup.out разрастаются до сотен мегабайт за неделю, и на тарифе с диском 5 ГБ это заметно. Другие стартовые конфигурации собраны в разделе недорогих VPS.

Диагностика: сессия не находится или не отцепляется

Разбирать проблему нужно по слоям. Первый: тот ли это сервер? При нескольких машинах легко подключиться не туда и искать сессию, которой здесь не было. Проверить помогает команда hostname — она печатает имя текущего сервера.

Второй слой: тот ли пользователь. Сессии принадлежат конкретному пользователю, и запущенную от root вы не увидите, зайдя как обычный user; текущее имя покажет whoami. Третий слой — само сообщение об ошибке.

Сообщение Что произошло Что делать
There is no screen to be resumed Сессии с таким именем нет: она завершена или создана другим пользователем Выполнить screen -ls, при пустом списке создать заново
no sessions (в tmux) Ни одной живой сессии tmux у этого пользователя Создать: tmux new -s work
(Attached) в списке screen Сессия уже открыта в другом терминале Перехватить: screen -d -r work — ключ -d отцепит чужой терминал
sessions should be nested with care Вы пытаетесь запустить tmux внутри tmux Отцепиться (Ctrl+B, D) и работать в существующей сессии

Отдельная ситуация — сессия «умерла» вместе с сервером. После перезагрузки машины сессии не восстанавливаются: мультиплексор живёт в оперативной памяти. Если поднимать одно и то же приходится каждый раз — задача просится в systemd-юнит.

Частые ошибки

Большинство проблем у новичков не технические, а организационные: сессии плодятся, имена забываются, важный процесс оказывается запущен не там.

Общее правило: одна задача — одна именованная сессия, и после завершения работы её закрывают. Тогда screen -ls всегда показывает короткий понятный список из двух-трёх строк, а не десяток безымянных номеров, в которых приходится разбираться перебором.

  • Создавать сессии без имени. Через неделю вы не отличите 4821.pts-0 от 5190.pts-1 и будете заходить в каждую наугад.
  • Держать в screen постоянную службу вроде телеграм-бота — она не переживёт перезагрузку сервера.
  • Закрывать окно терминала вместо отцепления. Сессия останется жива, но будет числиться подключённой, и вернуться в неё получится только командой screen -d -r.
  • Запускать сессию от root, а потом искать её из-под обычного пользователя.
  • Путать Ctrl+A и Ctrl+B, работая то со screen, то с tmux на разных серверах: выберите одну программу и ставьте только её.
  • Забывать про буфер: вывод старше 2000 строк tmux не хранит, поэтому важные логи пишите в файл через tee — эта команда одновременно показывает вывод на экране и сохраняет его в файл.

Частые вопросы

Нужны ли права root, чтобы пользоваться screen или tmux? Нет, права администратора нужны только на этапе установки пакета через apt или dnf. Дальше сессии создаются от обычного пользователя: процесс внутри получает ровно те права, что у вас.

Сколько сессий можно держать одновременно? Лимит упирается в память: сессия занимает 2–4 МБ, на сервере с 1 ГБ RAM их поместятся сотни. Практический предел другой — больше 4–5 сессий человек не помнит.

Что произойдёт с сессией при перезагрузке сервера? Она исчезнет вместе со всеми процессами: мультиплексор защищает от разрыва сети, но не от рестарта системы. Для задач, которые должны подниматься сами, нужен systemd-юнит.

Можно ли подключиться к одной сессии с двух компьютеров? Да: в screen команда screen -x work подцепляет вас к уже открытой сессии, оба увидят один экран и оба смогут печатать. В tmux то же делает обычный tmux attach -t work.

Почему после отцепления команда всё-таки остановилась? Скорее всего, процесс упал сам — по нехватке памяти или из-за ошибки в данных. Проверьте журнал ядра командой dmesg | tail — она печатает последние системные сообщения. Если сработал OOM-killer (механизм ядра, который при нехватке памяти завершает самый прожорливый процесс), там будет строка про убитый процесс.

Чем tmux лучше screen для новичка? Статусной строкой, панелями, которые переживают отцепление, и понятным файлом настроек ~/.tmux.conf.

Нужно ли что-то настраивать сразу после установки? Нет, обе программы работают из коробки. Полезнее сначала настроить безопасный вход по ключу — об этом есть инструкция по настройке SSH на VPS.

Итог

Чтобы перестать терять долгие процессы, достаточно выучить четыре команды и одно сочетание клавиш. Для screen это screen -S work, Ctrl+A и D, screen -ls, screen -r work. Для tmux — tmux new -s work, Ctrl+B и D, tmux ls, tmux attach -t work. Новичку удобнее tmux.

Отдельного сервера под мультиплексор не требуется — хватит той же машины, где вы разворачиваете проект, от 59 ₽/мес за конфигурацию с 1 ядром и 1 ГБ памяти. Если сервер ещё не выбран, сравните тарифы в разделе VPS с Linux: там собраны предложения 44 площадок с фильтрами по ядрам, памяти и локации.

Поделиться:
👁 81 просмотров
Марина
Редактор · FREEHOSTING
Главный редактор FREEHOSTING. С 2020 года тестирует VDS, VPS и хостинг-провайдеров — арендует серверы, нагружает их реальными проектами и пишет честные обзоры по итогам. Помогает читателям выбирать хостинг под свои задачи: от Telegram-бота до production-сайта.