tmux и screen для долгих задач по SSH
Запустили миграцию, бэкап или обучение модели по SSH, связь оборвалась — и процесс убит вместе с сессией. tmux и screen решают это: процесс живёт в отдельной сессии на сервере, а вы отсоединяетесь и переподключаетесь, когда удобно. Разбираем tmux как основной инструмент и screen как запасной.
Содержание
Проблема оборванной SSH-сессии
['Когда вы запускаете команду в SSH, она привязана к вашей сессии. Разрыв связи (закрыли ноутбук, моргнул интернет) присылает процессу SIGHUP, и он умирает. Долгая операция — импорт дампа, сборка, ML-тренировка — обрывается на середине.', 'tmux и screen — это терминальные мультиплексоры: они держат сессию на сервере независимо от вашего подключения. Отсоединились — процесс продолжает работать; вернулись — увидели тот же экран.', 'На VPS MAATRIX это стандартный рабочий инструмент: запустили тяжёлую задачу на AMD EPYC, отключились, проверили результат позже с телефона.']Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для длительных задачУстановка
['Обычно tmux уже есть; если нет — ставим:', 'sudo apt update && sudo apt install -y tmux', 'Для RHEL/CentOS/AlmaLinux:', 'sudo dnf install -y tmux']
Базовый цикл: старт, отсоединение, возврат
['Создаём именованную сессию, запускаем в ней задачу:', 'tmux new -s backup\n# внутри сессии запускаем долгую команду\npg_dump mydb | gzip > /mnt/data/backup.sql.gz', 'Отсоединяемся, не прерывая процесс — комбинация Ctrl+b, затем d (detach). Можно спокойно закрыть SSH.', 'Позже подключаемся к серверу заново и возвращаемся в сессию:', 'tmux ls # список сессий\ntmux attach -t backup', 'Процесс всё это время работал. Завершить сессию, когда она больше не нужна — просто exit внутри неё или:', 'tmux kill-session -t backup']
Окна и панели
['tmux умеет больше одной оболочки в сессии. Все команды начинаются с префикса Ctrl+b:', '- Ctrl+b c — новое окно; Ctrl+b n / p — следующее/предыдущее.
- Ctrl+b % — разбить панель вертикально; Ctrl+b " — горизонтально.
- Ctrl+b <стрелка> — переход между панелями.
- Ctrl+b d — отсоединиться от всей сессии.
Запасной вариант: screen
['screen делает то же самое, синтаксис отличается. Полезно знать, если tmux недоступен:', 'sudo apt install -y screen\nscreen -S backup # создать сессию\n# отсоединиться: Ctrl+a затем d\nscreen -ls # список сессий\nscreen -r backup # вернуться', 'Префикс у screen — Ctrl+a вместо Ctrl+b. Для новых серверов рекомендуют tmux: активнее развивается и гибче настраивается.']
Частые ошибки
['- Забыли имя сессии — tmux ls покажет все, attach без -t цепляется к последней.
- Внутри tmux не работает прокрутка мышью — войдите в режим копирования Ctrl+b [ и листайте стрелками, выход — q.
- Запустили задачу без tmux и уже боитесь разрыва — на будущее используйте nohup command & или сразу tmux.
- Сессия исчезла после перезагрузки сервера — tmux не переживает ребут; для этого нужен systemd-сервис, а не мультиплексор.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для длительных задачЧастые вопросы
tmux или screen?
Для новых серверов — tmux: активная разработка, панели, гибкая настройка. screen берите, только если tmux нельзя поставить.
Переживает ли tmux-сессия перезагрузку сервера?
Нет. При ребуте все сессии теряются. Задачи, которые должны переживать перезагрузку, оформляйте как systemd-сервис.
Чем tmux лучше nohup?
nohup просто отвязывает процесс от терминала, но вернуться к его интерактивному выводу нельзя. tmux сохраняет живой терминал, к которому можно переподключиться.