Зачем нужны tmux и screen на VDS
SSH-сессия обрывается при разрыве соединения, перезагрузке роутера или отключении Wi-Fi. Все процессы, запущенные в терминале, при этом получают сигнал HUP и завершаются. Если это apt upgrade, компиляция ядра или долгий бэкап базы — работа теряется на середине. tmux и screen решают эту проблему: они запускают отдельный сеанс терминала на сервере, который живёт независимо от SSH-соединения. Отключились — сессия осталась работать. Подключились заново — увидели тот же экран с теми же запущенными командами.
Оба инструмента решают одну задачу, но устроены по-разному. Разберём установку, базовые команды и отличия друг от друга.
Установка tmux и screen
В большинстве дистрибутивов оба пакета есть в стандартных репозиториях.
apt update
apt install -y tmux screen
Для CentOS, Rocky Linux и AlmaLinux:
dnf install -y tmux screen
Версию проверяют командой tmux -V и screen --version. Для тяжёлых задач вроде переноса базы данных или ручной сборки пакета инструменты из этой статьи применяют сразу после первого подключения к серверу по SSH, до начала работы.
Основные команды tmux
tmux работает с понятием сессий, окон и панелей (panes). Сессию можно назвать, что удобно, если их несколько.
| Команда | Действие |
|---|---|
tmux new -s backup | создание сессии с именем backup |
tmux ls | список активных сессий |
tmux attach -t backup | подключение к сессии backup |
Ctrl+b d | отключение от сессии (detach) |
Ctrl+b % | деление окна на панели по вертикали |
Ctrl+b " | деление окна по горизонтали |
tmux kill-session -t backup | завершение сессии |
Комбинация клавиш начинается с префикса Ctrl+b, затем идёт отдельная клавиша команды. Этим tmux отличается от screen, где префикс — Ctrl+a.
Основные команды screen
screen старше tmux и устроен проще: одно окно — один терминал, без встроенного деления на панели в базовой версии.
screen -S backup
screen -ls
screen -r backup
Отключение от сессии — Ctrl+a d, создание нового окна внутри сессии — Ctrl+a c, переключение между окнами — Ctrl+a n (следующее) и Ctrl+a p (предыдущее). Иногда после обрыва связи сессия остаётся в статусе «Attached», и подключение через screen -r выдаёт ошибку. Тогда помогает команда screen -d -r backup, которая принудительно отсоединяет старое подключение.
Чем tmux отличается от screen
Разница не только в горячих клавишах.
- tmux делит окно на панели без дополнительных пакетов, screen — только через модуль или новые сборки.
- tmux поддерживает конфигурационный файл
~/.tmux.confс гибкой настройкой статус-бара и цветовой схемы. - screen работает почти на любом Unix-сервере без установки — часто он уже стоит в системе по умолчанию.
- tmux развивается активнее и обычно быстрее восстанавливает layout после отключения по SSH.
Для повседневной работы на VDS большинство администраторов выбирают tmux из-за панелей и удобной настройки. screen остаётся вариантом для минимальных систем, где лишние пакеты ставить не хочется.
Действия при обрыве SSH-соединения
Если соединение оборвалось само, а не через detach, сессия tmux или screen остаётся в фоне — процессы продолжают работать. После восстановления связи достаточно подключиться по SSH и выполнить tmux attach или screen -r. Чтобы не путать сессии, стоит сразу присваивать им понятные названия, например tmux new -s deploy вместо безымянной сессии с номером.
Для длительных фоновых задач без интерактивного вывода лучше подходит настоящий демон через systemd — для регулярных заданий стоит посмотреть создание unit-файла для автозапуска службы или настройку планировщика cron. tmux и screen нужны именно для интерактивной работы: миграций, установки пакетов, диагностики в реальном времени.
Итог: что запомнить
- tmux и screen сохраняют терминальную сессию на сервере при обрыве SSH-соединения.
- Установка:
apt install -y tmux screenилиdnf install -y tmux screen. - В tmux префикс —
Ctrl+b, в screen —Ctrl+a. - Сессии называют при создании:
tmux new -s имя,screen -S имя. - Для фоновых задач без интерактива применяют systemd или cron, а не tmux.