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 — небольшой инструмент с долгой историей. Он сохраняет работу при обрыве связи, даёт окна и области, умеет писать логи и настраивается одним файлом. Для большинства задач достаточно нескольких базовых сочетаний клавиш и минимальной настройки, а остальное добавляется по мере необходимости. Если вы ещё не пользовались мультиплексором, начните с именованной сессии и отсоединения: этого уже хватит, чтобы перестать терять долгие команды.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте