GNU Screen — терминальный мультиплексор: запускает несколько терминальных сессий внутри одного SSH-соединения. Главная задача — защита процессов от разрыва соединения. Процессы продолжают работать даже после отключения SSH, к ним можно вернуться.
Основные команды
screen # запустить новую сессию
screen -S myname # именованная сессия
screen -ls # список активных сессий
screen -r myname # переподключиться к сессии
screen -d -r myname # принудительно отсоединить и переподключить
Горячие клавиши (префикс Ctrl+A)
Ctrl+A d— detach: отсоединиться (сессия продолжает работать).Ctrl+A c— создать новое окно (window).Ctrl+A n/Ctrl+A p— следующее/предыдущее окно.Ctrl+A "— список окон с выбором.Ctrl+A A— переименовать текущее окно.Ctrl+A k— завершить текущее окно.
Практические сценарии
Запустить долгий процесс (компиляция, бэкап базы данных) через SSH без риска прерывания:
screen -S backup
pg_dumpall -U postgres | gzip > /backups/all_$(date +%Y%m%d).sql.gz
# Нажать Ctrl+A d — отсоединиться
# Позже: screen -r backup — посмотреть результат
screen vs tmux
| Параметр | screen | tmux |
|---|---|---|
| Разделение окна | Только горизонтально | Горизонтально и вертикально |
| Конфигурация | Ограниченная (.screenrc) | Гибкая (.tmux.conf) |
| Цветовые схемы | Ограниченные | 256 цветов |
| Доступность | Установлен по умолчанию | Устанавливать отдельно |
| Активная разработка | Минимальная | Активная |
Для основной задачи — «запустить процесс и отключиться» — screen и tmux одинаково подходят. tmux предпочтителен при частой работе со split-панелями.
История
GNU Screen создан Оливером Лауманном (Oliver Laumann) в 1987 году в Гамбурге. Включён в проект GNU в 1993 году. Активная разработка прекратилась в середине 2000-х. tmux создан как современная альтернатива в 2007 году Николасом Серриотом (Nicholas Serriott), к 2009 году достиг стабильности. Сегодня VPS-администраторы чаще выбирают tmux, но screen остаётся важен благодаря предустановленности.
Основные команды
Горячие клавиши screen начинаются с prefix Ctrl+A:
Ctrl+A c— создать новое окноCtrl+A n— следующее окноCtrl+A p— предыдущее окноCtrl+A d— отключиться (detach), сессия продолжает работатьCtrl+A [— режим прокрутки буфера (q для выхода)Ctrl+A "— список всех окон
Переподключиться к сессии: screen -r (если одна) или screen -r sessionname. Список сессий: screen -ls.
Screen vs tmux
tmux — современная альтернатива screen с более гибкой конфигурацией и разделением панелей. Screen проще и доступен на большинстве серверов из коробки без установки. Для быстрого запуска долгой команды на удалённом VPS screen достаточен — создал сессию, запустил процесс, отключился по SSH.
Практические сценарии
Деплой на сервер: запустить screen, выполнить git pull && npm run build, отключиться, вернуться через 10 минут и проверить результат. Миграция базы данных: запустить дамп в screen-сессии — даже разрыв SSH не прервёт процесс. Мониторинг логов в одном окне, редактирование конфигов в другом — всё в одном SSH-соединении.
Именованные сессии: screen -S deploy создаёт сессию с именем. На сервере с несколькими администраторами каждый работает в своей сессии и не мешает другим.