GNU Screen — терминальный мультиплексор, который держит сессию на сервере, даже когда SSH-соединение оборвалось. Внутри одной сессии открываются окна, области и общий экран для нескольких клиентов. Программа появилась в 1987 году, входит в базовые репозитории почти всех дистрибутивов и работает даже на минимальных системах. Ниже — установка, повседневные сочетания клавиш, настройка .screenrc и разбор ситуаций, в которых Screen ведёт себя неочевидно.
Зачем Screen в 2026 году
У tmux больше возможностей и активнее развитие, но Screen выигрывает в другом: он есть в прошивках, на старых серверах и в спасательных образах, где tmux просто не установлен. Он нетребователен к зависимостям, работает через последовательную консоль и предсказуемо ведёт себя при плохой связи. Для долгих задач — сборки, миграции базы, копирования — достаточно создать сессию и отцепиться. Процесс продолжит работу под управлением сервера, а не вашего SSH-клиента.
Установка и проверка
В Debian, Ubuntu и Linux Mint пакет ставится одной командой. В Fedora используется dnf, в Arch — pacman.
sudo apt install screen
screen --version
# Fedora: sudo dnf install screen
# Arch: sudo pacman -S screen
Проверьте, что терминал поддерживает UTF-8: locale должен возвращать UTF-8, иначе кириллица в именах окон превратится в мусор. Для старых систем полезно добавить defutf8 on в конфигурацию.
Сессия: создать, отцепиться, вернуться
Именованная сессия удобнее безымянной: её легко найти в списке. Отсоединение выполняется сочетанием Ctrl+A, затем D. Сессия остаётся живой, а терминал возвращается в обычную оболочку.
screen -S deploy
# внутри: Ctrl+A, затем D
screen -ls
screen -r deploy
screen -d -r deploy
Если сессия уже открыта в другом терминале, screen -r сообщит, что она attached. Команда screen -d -r принудительно отберёт её у старого клиента и подключит текущий. Флаг -x подключает второй клиент к той же сессии, и оба видят один экран — это удобно для совместной отладки, но требует согласованности действий.
Окна
Окна внутри сессии ведут себя как вкладки. Префикс по умолчанию — Ctrl+A; после него нажимается команда.
Ctrl+A c создать окно
Ctrl+A n / p следующее / предыдущее
Ctrl+A 0..9 перейти по номеру
Ctrl+A " список окон
Ctrl+A A переименовать окно
Ctrl+A k закрыть окно
Номера окон сохраняются, поэтому к постоянным задачам удобно привязаться: ноль — оболочка, один — логи, два — редактор. Переименование помогает, когда окон больше пяти. Сочетание Ctrl+A ? показывает встроенную справку со всеми командами.
Области и раскладка
Screen умеет делить экран на области. Горизонтальное разделение — Ctrl+A S, вертикальное — Ctrl+A |. Переключение между областями — Ctrl+A Tab, закрытие текущей — Ctrl+A X, закрытие всех кроме текущей — Ctrl+A Q.
Ctrl+A S разделить по горизонтали
Ctrl+A | разделить по вертикали
Ctrl+A Tab перейти в другую область
Ctrl+A X закрыть область
Ctrl+A Q оставить только текущую
Области — это не отдельные окна, а виды на разные окна сессии. Новички часто путают их с панелями tmux. После закрытия области окно не исчезает, если в нём остался процесс.
Копирование, прокрутка и поиск
История прокрутки доступна в режиме копирования: Ctrl+A [, затем стрелки или Page Up. Пробел ставит начало выделения, второй пробел — конец и копирует текст в буфер Screen. Вставка — Ctrl+A ].
Ctrl+A [ режим копирования
Space начало и конец выделения
Ctrl+A ] вставить буфер
/srv поиск вперёд в режиме копирования
Глубина истории задаётся директивой defscrollback в .screenrc или флагом -h при запуске. Значение по умолчанию невелико, поэтому для логов его стоит увеличить до 20000 строк. В режиме копирования работают / и ? для поиска, а n повторяет находку.
Логи и мониторинг
Встроенное логирование включается флагом -L или сочетанием Ctrl+A H. Файл создаётся в текущем каталоге и называется screenlog.0, screenlog.1 и так далее.
screen -L -S job
# внутри сессии: Ctrl+A H
Ctrl+A M следить за активностью окна
Ctrl+A _ следить за тишиной
Мониторинг полезен, когда команда должна закончиться или, наоборот, замолчать. Screen покажет уведомление в строке состояния. Для длинных логов лучше настроить ротацию, иначе файл вырастет без ограничений.
Файл .screenrc
Настройки читаются из ~/.screenrc при старте. Разумный минимум отключает приветствие и звонок, включает автоотсоединение и задаёт строку состояния.
startup_message off
vbell off
defscrollback 20000
autodetach on
hardstatus alwayslastline
hardstatus string "%{= kG}%-Lw%{= kW}%50>%n%f* %t%{-}%+Lw%<"
screen -t shell 0
screen -t logs 1
Строка hardstatus показывает список окон и активное имя. Команды screen -t создают окна при запуске сессии. Если конфигурация сломана, запускайте screen -c /dev/null, чтобы обойти файл и найти ошибку.
Типичные проблемы
- Сообщение Attached: используйте screen -d -r имя или screen -x для совместного доступа.
- Cannot open your terminal: проверьте права на /dev/pts и запустите script /dev/null перед screen.
- Сессия числится мёртвой: удалите её командой screen -wipe.
- Вложенный Screen: префикс внутреннего экземпляра доступен через Ctrl+A a.
- Кракозябры: проверьте locale, TERM и директиву defutf8 on.
- Процесс завершился при выходе: убедитесь, что отсоединяетесь, а не закрываете окно.
Screen или tmux
tmux удобнее в повседневной работе: панели, копирование в системный буфер, конфигурация на понятном языке, активная разработка. Screen проще, меньше и чаще встречается на чужой инфраструктуре. Если вы администрируете старые серверы или работаете с консолью через Serial-over-LAN, знать Screen обязательно. Держать оба инструмента в арсенале несложно: базовые сценарии у них совпадают.
Чек-лист
- Сессии именуются по задаче, а не остаются безымянными.
- defscrollback увеличен, если предстоит читать логи.
- Для долгих операций включено логирование.
- В .screenrc отключены приветствие и лишние уведомления.
- Перед перезагрузкой сервера сессии проверены через screen -ls.
- Мёртвые сессии удаляются, чтобы не путать список.
Итог
GNU Screen — небольшой инструмент с долгой историей. Он сохраняет работу при обрыве связи, даёт окна и области, умеет писать логи и настраивается одним файлом. Для большинства задач достаточно нескольких базовых сочетаний клавиш и минимальной настройки, а остальное добавляется по мере необходимости. Если вы ещё не пользовались мультиплексором, начните с именованной сессии и отсоединения: этого уже хватит, чтобы перестать терять долгие команды.