GNU Screen — мультизадачность в терминале Linux

Что такое GNU Screen?
GNU Screen — это менеджер виртуальных терминалов: одна реальная сессия терминала может содержать множество «окон» (виртуальных экранов), между которыми вы переключаетесь. Каждый экран запускает свою оболочку или программу, и вы можете отсоединять (detach) сессию, оставляя процессы работать, а затем снова к ней подключаться (reattach).
Кратко, что делает Screen:
- Позволяет запускать фоновые процессы в терминале и возобновлять сессию после разрыва SSH.
- Даёт возможность иметь несколько окон в одном терминале.
- Поддерживает логирование, блокировку и совместный доступ для нескольких пользователей.
Определение одного предложения: Screen — это инструмент для разделения одного терминального соединения на несколько независимых окон и сохранения их состояния при отключении.
Зачем использовать Screen: ментальные модели
- «Сессия как контейнер»: думайте о Screen как о контейнере процессов, который можно убрать в фон и вернуть.
- «Окна как вкладки»: каждое окно — отдельная вкладка с командной строкой или программой.
- «Detach/Attach как пауза и продолжение»: отключились — процесс не умер, подключились — продолжили.
Важно: Screen не заменяет систему управления процессами — он облегчает работу с интерактивными и долгими задачами через терминал.
Как установить Screen
Screen обычно не предустановлен, но он поддерживается большинством дистрибутивов.
На Ubuntu/Debian:
sudo apt-get update
sudo apt-get install screenНа Arch Linux:
sudo pacman -Syu
sudo pacman -S screenНа Fedora/CentOS (yum):
sudo yum update
sudo yum install screenПримечание: в новых версиях Fedora/Red Hat возможно использование dnf вместо yum. Если у вас другая система пакетов, используйте эквивалентный пакетный менеджер.
Как запустить Screen
Откройте терминал или подключитесь по SSH и выполните:
screenПоявится вводное окно с лицензией и подсказками — нажмите пробел или Enter, чтобы закрыть. Вы вернётесь к обычному терминалу, но теперь все команды выполняются внутри Screen-сеанса.
Совет: запустите screen -S имя_сессии, чтобы задать удобное имя прямо при старте (см. раздел далее).
Основы управления сеансами: подключение и отключение
Отключение (detach): если вы находитесь в сеансе Screen и хотите временно уйти — нажмите Ctrl+A, затем d (нижний регистр). Сессия останется работать в фоне.
Повторное подключение (reattach): если у вас только одна сеcсия, выполните:
screen -rЕсли вы хотите принудительно отключить чужую сессию и подключиться сами, используйте:
screen -rdСписок запущенных сеансов:
screen -lsВы увидите список с идентификаторами и именами. Для подключения к конкретной сессии используйте её ID:
screen -r 25407Чтобы завершить сессию полностью и остановить все процессы в ней — подключитесь и введите exit.
Полезные команды и сочетания клавиш
Примечание: основной префикс клавиш в Screen — Ctrl+A. Это означает: сначала нажмите и отпустите Ctrl+A, затем вторую клавишу.
- Отключиться от сеанса: Ctrl+A, d
- Список клавиш: Ctrl+A, ?
- Создать новое окно: Ctrl+A, c
- Переключиться на окно по номеру: Ctrl+A, 0..9
- Список окон: Ctrl+A, w
- Запустить с именем:
screen -S имя_сессии - Подключиться по имени:
screen -r имя_сессииилиscreen -x имя_сессии(для совместного доступа) - Логировать вывод:
screen -L(лог сохраняется в файле screenlog.x) - Включить/выключить лог в сеансе: Ctrl+A, H (Shift+h)
- Заблокировать сессию: Ctrl+A, x (потребует пароль учётной записи для разблокировки)
Создание и переключение окон
- Первое окно имеет номер 0, следующее — 1 и т.д.
- Можно циклически переключаться комбинациями Ctrl+A, n (next) и Ctrl+A, p (previous).
- Чтобы перейти в окно по номеру: Ctrl+A, номер.
Именованные сессии и совместный доступ
Запуск именованной сессии:
screen -S examplenameПодключение по имени:
screen -r examplenameСовместный доступ (join):
screen -rx examplenameКоманда -x позволяет нескольким пользователям видеть и взаимодействовать с одной сессией одновременно.
Логирование вывода
Чтобы включить логирование всей сессии при запуске:
screen -L -S mysessionПри включенном логировании файлы называются screenlog.0, screenlog.1 и т.д., и по умолчанию сохраняются в домашней директории пользователя. Для включения логирования в уже запущенной сессии: Ctrl+A, H.
Блокировка сессии
Для временной блокировки экрана и защиты от посторонних используйте Ctrl+A, x. Разблокировать можно введя пароль вашей учётной записи в системе.
Типичные рабочие сценарии и мини-методология
Удалённая долгосрочная задача (например, бэкап или обновление):
- Подключиться по SSH.
- Запустить
screen -S maintenance. - Начать задачу (скрипт, wget, apt upgrade) в первом окне.
- Создать второе окно для мониторинга логов (Ctrl+A, c), запустить
tail -f /var/log/.... - Отключиться (Ctrl+A, d). При разрыве сети процесс продолжит работу.
Совместная отладка с коллегой:
- Запустить именованную сессию:
screen -S shared. - Коллега подключается через
screen -x youruser/sharedилиscreen -rx shared. - Один вводит команды, другой наблюдает и помогает.
- Запустить именованную сессию:
Быстрое тестирование и очистка:
- Запустить
screen. - Открыть несколько окон для разных тестов.
- Завершить ненужные окна командой
exitили закрыв процесс.
- Запустить
Краткая методология: именуйте сессии, держите лог для аудита, используйте отдельные окна для мониторинга и управления.
Сравнение: Screen vs tmux (когда стоит выбрать что-то другое)
- Простота: Screen проще и старше — начните с него, чтобы понять концепцию.
- Расширяемость и конфигурация: tmux предлагает более современную систему конфигурации, разделение панелей (pane splitting), продвинутые скрипты и плагины.
- Совместная работа: оба позволяют совместно использовать сессии, но tmux даёт более гибкое управление окнами и панелями.
Выбор:
- Если вам нужна максимальная совместимость и минимум зависимостей — Screen подходит.
- Если вы хотите много кастомизации, панели и современный рабочий поток — рассматривайте tmux.
Контрпример: если вы активно используете вертикальное и горизонтальное разделение экрана с множеством панелей, Screen выглядит громоздким по сравнению с tmux.
Советы по безопасности и приватности
- Логи: Screen может записывать вывод в файлы. Убедитесь, что файлы логов защищены и не содержат чувствительных данных.
- Права доступа: не давайте общедоступные учётные записи доступ к именованным сессиям — любой, кто подключится, получит доступ к выполняемым командам.
- Блокировка: используйте Ctrl+A, x для блокировки локальной сессии, особенно если вы оставляете терминал без присмотра.
- SSH: используйте защиту SSH (ключи, двухфакторную аутентификацию), так как Screen только сохраняет процессы, но доступ всё равно контролируется через SSH и права пользователя.
Примечание по GDPR и конфиденциальности: если в логах могут попадать персональные данные, настройте ротацию и шифрование логов согласно внутренней политике хранения данных.
Чек-листы по ролям
Системный администратор:
- Установить screen на сервере.
- Настроить именованные сессии для долгосрочных задач.
- Включить логирование критичных операций.
- Обеспечить ротацию логов и права доступа.
Разработчик/инженер DevOps:
- Использовать отдельное окно для мониторинга логов.
- Именовать сессии по задаче:
deploy-2025-01-01. - Автоматизировать запуск сессий в скриптах:
screen -dmS jobname cmd.
Новый пользователь Linux:
- Попрактиковаться с Ctrl+A, c и Ctrl+A, d.
- Использовать
screen -lsдля просмотра сессий. - Закрывать ненужные окна командой
exit.
Сниппеты и шаблоны команд (cheat sheet)
Запустить фоновую задачу без прикрепления:
screen -dmS longjob sh -c 'bash /path/to/script.sh'Подключиться к именованной сессии:
screen -r mynameПринудительно отсоединить чужую сессию и подключиться:
screen -rd 12345Включить логирование и сохранить лог в определённом месте (вручную):
# в сессии
Ctrl+A :logfile /home/user/logs/myscreen.log
Ctrl+A HАвтоматический запуск и логирование из скрипта:
screen -dmS backup bash -c 'rsync -a /src /dst; echo done' && screen -r backup -X logfile /var/log/backup-screen.logОтладка и распространённые проблемы
- “screen -r” говорит, что сеанс уже подключён: используйте
screen -rdдля принудительного отсоединения. - Комбинации клавиш не работают: убедитесь, что сначала нажали Ctrl+A, затем отпустили и нажали вторую клавишу.
- Не виден вывод логов: проверьте права на файл
screenlog.xи путь сохранения.
Критерии приёмки (пример):
- Можно запустить именованную сессию и отсоединиться без остановки процесса.
- При повторном подключении вывод процесса доступен и интерактивность сохранена.
Совместимость и миграция
- Формат сессий Screen переносим между версиями GNU Screen, но конфигурационные файлы (
~/.screenrc) могут иметь нюансы. Перед миграцией проверьте опции в.screenrc. - Если планируете сменить на tmux, учтите, что конфигурация и сочетания клавиш отличаются; существуют утилиты/скрипты для упрощённой миграции сценариев.
Краткая галерея крайних случаев
- Длинная загрузка по SSH: Screen защитит процесс от разрыва.
- Совместная работа по устранению инцидента: два инженера видят одни и те же окна.
- Скрытие конфиденциальных данных: не храните пароли в логах.
1‑строчный глоссарий
- Сессия: контейнер Screen, содержащий окна; окно: отдельная оболочка/процесс; Detach: отключиться, Attach: подключиться.
Социальный текст для публикации
OG заголовок: GNU Screen — мультизадачность в терминале
OG описание: Используйте Screen для фоновых задач, логирования и совместной работы по SSH. Быстрая инструкция по установке и рабочим сценариям.
Короткое анонс‑сообщение (100–200 слов):
GNU Screen — надёжный инструмент для управления множеством задач в одном терминале. В этой статье вы найдёте пошаговые инструкции по установке в популярных дистрибутивах, основные сочетания клавиш, рекомендации по безопасности и реальные рабочие сценарии (удалённые задачи, совместный доступ, логирование). Объясняем разницу между Screen и tmux, даём чек-листы для администраторов и разработчиков, и включаем полезные сниппеты для автоматизации. Идеально подходит для тех, кто управляет серверами по SSH или часто работает с длительными командами локально.
Заключение — краткое резюме
GNU Screen остаётся простым и надёжным инструментом для мультизадачности в терминале. Он помогает управлять долгими задачами, обеспечивает восстановление после разрыва соединения и может использоваться для совместной работы. Если вам нужны более продвинутые возможности управления окнами и панелями, рассмотрите tmux, но для большинства базовых сценариев Screen остаётся быстрым и удобным выбором.
Важно: всегда следите за логами и правами доступа, особенно при совместном использовании сессий.
Похожие материалы
Поиск в Google по дате — как найти результаты за период
Временный сайт: быстро и бесплатно
Аппетитная еда: 11 советов для съёмки
Кто просматривал ваш профиль в LinkedIn: руководство
Как заблокировать пользователя в LinkedIn