# tmux и screen: сессии на сервере без обрыва SSH

> tmux и screen сохраняют сессию на сервере при обрыве SSH: установка, команды и разница между инструментами.

## Зачем нужны 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](https://www.zevshost.net/ru/kb/podklyuchenie-vds-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-файла для автозапуска службы](https://www.zevshost.net/ru/kb/systemd-service-sozdat/) или [настройку планировщика cron](https://www.zevshost.net/ru/kb/cron-nastroika-linux/). 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.

---

Источник: https://www.zevshost.net/ru/kb/tmux-screen-sessii/
