Гид по технологиям

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

8 min read Linux Обновлено 31 Dec 2025
GNU Screen — мультизадачность в терминале
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-сеанса.

экран приветствия GNU Screen с информацией о лицензии

Совет: запустите screen -S имя_сессии, чтобы задать удобное имя прямо при старте (см. раздел далее).

Основы управления сеансами: подключение и отключение

Отключение (detach): если вы находитесь в сеансе Screen и хотите временно уйти — нажмите Ctrl+A, затем d (нижний регистр). Сессия останется работать в фоне.

Повторное подключение (reattach): если у вас только одна сеcсия, выполните:

screen -r

Если вы хотите принудительно отключить чужую сессию и подключиться сами, используйте:

screen -rd

Список запущенных сеансов:

screen -ls

Вы увидите список с идентификаторами и именами. Для подключения к конкретной сессии используйте её ID:

screen -r 25407

Чтобы завершить сессию полностью и остановить все процессы в ней — подключитесь и введите exit.

список активных сессий GNU Screen с ID и статусом

Полезные команды и сочетания клавиш

Примечание: основной префикс клавиш в 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. Разблокировать можно введя пароль вашей учётной записи в системе.

заблокированное окно GNU Screen, запрос пароля для разблокировки

Типичные рабочие сценарии и мини-методология

  1. Удалённая долгосрочная задача (например, бэкап или обновление):

    • Подключиться по SSH.
    • Запустить screen -S maintenance.
    • Начать задачу (скрипт, wget, apt upgrade) в первом окне.
    • Создать второе окно для мониторинга логов (Ctrl+A, c), запустить tail -f /var/log/....
    • Отключиться (Ctrl+A, d). При разрыве сети процесс продолжит работу.
  2. Совместная отладка с коллегой:

    • Запустить именованную сессию: screen -S shared.
    • Коллега подключается через screen -x youruser/shared или screen -rx shared.
    • Один вводит команды, другой наблюдает и помогает.
  3. Быстрое тестирование и очистка:

    • Запустить 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 остаётся быстрым и удобным выбором.

Важно: всегда следите за логами и правами доступа, особенно при совместном использовании сессий.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Поиск в Google по дате — как найти результаты за период
Поиск

Поиск в Google по дате — как найти результаты за период

Временный сайт: быстро и бесплатно
Веб-разработка

Временный сайт: быстро и бесплатно

Аппетитная еда: 11 советов для съёмки
Фотография еды

Аппетитная еда: 11 советов для съёмки

Кто просматривал ваш профиль в LinkedIn: руководство
Карьера

Кто просматривал ваш профиль в LinkedIn: руководство

Как заблокировать пользователя в LinkedIn
LinkedIn

Как заблокировать пользователя в LinkedIn

Как увеличить охват на LinkedIn
Социальные сети

Как увеличить охват на LinkedIn