Как пользоваться screen — простой мультиплексор терминала

Зачем нужен screen
screen — это программа для Unix-подобных систем, называемая «терминальный мультиплексор». Она позволяет:
- запускать несколько терминальных «окон» или сеансов внутри одного логина;
- отсоединять (detach) сеанс и оставлять задачи выполняться в фоне;
- повторно подключаться (reattach) к сеансу с того же или другого терминала/машины;
- сохранять долгие задачи при выходе из графической сессии или разрыве SSH.
Коротко: screen освобождает вас от необходимости держать открытой оболочку ради одной долгой команды.
Установка
screen доступен почти во всех дистрибутивах. Примеры установки:
# Debian / Ubuntu / Mint
sudo apt install screen
# Fedora / RHEL
sudo dnf install screen
# Arch Linux
sudo pacman -S screen
# macOS (Homebrew)
brew install screenУстановится быстро, зависимости минимальные.

Первый сеанс
Запускать команды в screen можно по-разному. Самый простой способ — запустить интерактивную сессию и внутри неё открыть редактор или другую программу:
screen -S mysession
# внутри: nano mte_screen.txtИли, если хотите сразу запустить команду в новом сеансе и оставить её в фоне:
# создать именованный сеанс и запустить команду в отсоединённом режиме
screen -dmS backup 7z a archive.7z /path/to/filesПример простого запуска nano в отдельном сеансе (альтернатива предыдущему способу):
screen -S notes -U bash -c 'nano mte_screen.txt; exec bash'Если предпочитаете минимализм, можно просто выполнить:
screen
# откроется новая сессия с интерпретатором; внутри запускаете что нужно, затем Ctrl-a d для отсоединения
Как отсоединиться от сеанса
Внутри активного сеанса используйте стандартное сочетание клавиш:
- Ctrl-a d — отсоединить текущую сессию (detach)
После этого редактор или программа продолжат работу в фоне, а вы вернётесь в исходный терминал. Terminal выведет строку вида:
[detached from 14384.pts-0.hostname]
Как снова подключиться к сеансу
Если у вас только один активный сеанс, простая команда вернёт вас в него:
screen -rКогда сессий несколько, сначала получите список, затем подключитесь к нужной.
Список сеансов и подключение к конкретному сеансу
Команда для просмотра всех сеансов:
screen -lsВы увидите что-то типа:
There are screens on:
14384.mysession (Detached)
14336.notes (Detached)
2 Sockets in /run/screen/S-youruser.Подключение по идентификатору или по имени:
# по id
screen -r 14384
# по имени
screen -r mysession
# если нужно принудительно отсоединить сессию от другого терминала и подключиться
screen -d -r 14384
Полезные приёмы и флаги
- screen -S name — создать именованный сеанс (удобно для автоматизации и распознавания);
- screen -dmS name command — запустить команду в новом именованном сеансе и сразу отсоединиться;
- screen -ls — перечислить сеансы;
- screen -r — повторно подключиться;
- screen -d -r — отсоединить и подключиться (полезно при «занятом» сеансе);
- Ctrl-a c — создать новое окно внутри сеанса;
- Ctrl-a n / Ctrl-a p — перейти к следующему/предыдущему окну;
- Ctrl-a 0..9 — перейти к окну с указанным номером (0–9);
- Ctrl-a “ — список окон для выбора;
- Ctrl-a A — задать заголовок (title) текущего окна;
- Ctrl-a k — убить (kill) текущее окно;
- Ctrl-a [ — войти в режим копирования/просмотра буфера (для прокрутки вывода);
- Ctrl-a H — начать логирование текущего окна в файл (включить/выключить запись).
Когда seans завершается сам по себе
Если вы запускали команду непосредственно через screen (screen -dmS name command), и эта команда завершилась, seанс может закрыться автоматически. Чтобы seанс оставался живым после завершения команды, создавайте интерактивную оболочку в сеансе или добавьте команду, которая удерживает оболочку, например:
screen -S longjob bash -c 'long-running-command; echo "done"; exec bash'Или вручную выполните screen, затем внутри уже запустите нужную команду — seанс останется даже если команда завершится и вы не выходите из оболочки.
Работа с удалёнными машинами и разными терминалами
Главная сила screen — независимость от конкретного окна терминала. Вы можете:
- стартовать задачу по SSH на сервере в сеансе screen и отсоединиться — задача продолжит выполняться;
- закрыть локальный терминал и позже подключиться с ноутбука и reattach к тому же сеансу;
- использовать разные эмуляторы терминала (gnome-terminal, Guake, xterm), подключаться к одному сеансу.
Пример: подключились по SSH, запустили бэкап в screen и вышли из SSH — бэкап идёт дальше.

Когда screen не подходит или лучше использовать альтернативы
- Если вы хотите более современную и легко настраиваемую программу с разделением панелей, продвинутой конфигурацией и активным сообществом — рассмотрите tmux. tmux чаще используется в средах, где важны скрипты и плагины.
- Для простого фонового выполнения одиночной команды подойдёт nohup или systemd-run.
- Для GUI-сессий и управления задачами на уровне сервисов лучше systemd.
Каждый инструмент имеет свои сильные стороны: screen надёжен и прост; tmux гибче и современнее.
Шпаргалка — ключевые команды и сочетания
- Создать именованный сеанс: screen -S name
- Создать и сразу отсоединить: screen -dmS name command
- Список: screen -ls
- Подключиться: screen -r [id|name]
- Принудительно переотключить и подключиться: screen -d -r id
- Отсоединиться изнутри: Ctrl-a d
- Новое окно: Ctrl-a c
- Переключиться: Ctrl-a n / Ctrl-a p / Ctrl-a 0..9
- Назвать окно: Ctrl-a A
- Убить окно: Ctrl-a k
- Режим копирования: Ctrl-a [
- Начать логирование: Ctrl-a H
Мини-методика для запуска долгих задач (SOP)
- Подключитесь по SSH к серверу.
- Создайте именованный сеанс: screen -S mytask.
- Запустите команду (вручную или через screen -dmS mytask command).
- Нажмите Ctrl-a d, чтобы отсоединиться и закрыть SSH, если нужно.
- Позже подключитесь: screen -r mytask, проверьте лог или статус задачи.
- По окончании завершите процесс или закройте сеанс Ctrl-a k в нужном окне.
Рекомендации по безопасности и приватности
- Сессии screen наследуют права пользователя, от которого они запущены. Не запускайте screen от root без явной необходимости.
- Логи можно включить (Ctrl-a H). Следите, чтобы логи не содержали секретов и были защищены правами доступа.
- При работе на многопользовательном сервере проверяйте права на сокеты screen (обычно в /run/screen или /var/run/screen).
Полезные трюки и расширенные примеры
- Запустить команду и оставить оболочку открытой по завершении:
screen -S demo bash -c 'sleep 60; echo done; exec bash'- Автоматический запуск скрипта в фоне при старте системы: используйте системный системный менеджер (systemd) или crontab @reboot; screen можно вызвать из этих механизмов, но учтите, что процессы должны иметь корректные переменные окружения.
Сравнение с tmux (коротко)
- Простота: screen выигрывает по простоте и наличию во всех старых дистрибутивах.
- Конфигурирование: tmux гибче, лучше для сложных скриптов и раскладок.
- Совместимость: screen работает практически везде.
Выбор зависит от привычек и требований. Для базового мультизадачности screen — отличный выбор.
Когда screen может подвести
- Если вы хотите пользоваться современными терминальными «кладками» и тонкой настройкой макросов, screen менее удобен.
- В редких случаях старые сборки screen могут иметь несовместимости с некоторыми эмуляторами терминала; тогда обновление или переход на tmux решают проблему.
Ментальные модели и эвристики
- Подумайте о screen как о «несгораемом» контейнере для сеанса терминала: вы можете закрыть панель, но контейнер остаётся.
- Именуйте сеансы для ясности: name = «host-task» или «project-role».
- Используйте отдельные окна для долгих задач и мониторинга, чтобы не смешивать логи и интерактивную работу.
Решение: когда создать именованный сеанс
flowchart TD
A[Нужно ли оставить задачу после выхода?] -->|Да| B[Создать именованный сеанс]
A -->|Нет| C[Запустить команду обычным способом]
B --> D{Команда должна запускаться в фоне?
}
D -->|Да| E[screen -dmS name command]
D -->|Нет| F[screen -S name, запустить внутри команду]
E --> G[Отсоединиться]
F --> G
G --> H[Позже: screen -r name]Критерии приёмки
- Умею создавать именованные сеансы и подключаться к ним;
- Могу запускать задачу в фоне так, чтобы она продолжала работать после отсоединения;
- Могу просмотреть список сеансов и корректно выбрать нужный;
- Знаю базовые сочетания клавиш: Ctrl-a d, Ctrl-a c, Ctrl-a n/p, Ctrl-a A.
1‑строчный глоссарий
- Сеанс (session): изолированный экземпляр экрана, где выполняется оболочка или команда.
- Окно (window): виртуальная вкладка внутри сеанса screen.
- Отсоединение (detach): действие, которое закрывает клиентскую привязку к сеансу, оставляя сеанс живым.
- Reattach: подключение обратно к уже существующему сеансу.
Быстрый чеклист для ролей
- Системный администратор: создавайте именованные сеансы для бэкапов и мониторинга, используйте screen -dmS в cron/systemd.
- Разработчик: используйте окна для параллельной отладки, логов и запуска тестов.
- Аналитик/учёный данных: запускайте долгие вычисления по SSH через screen и отсоединяйтесь при необходимости.
Краткое резюме
Screen — простой и надёжный инструмент для мультизадачности в терминале. Он особенно хорош для запуска долгих задач по SSH и для случаев, когда нужно оставить программы работать независимо от локального терминала. Если вам нужна расширяемость и современный набор функций, рассмотрите tmux, но для большинства повседневных задач screen остаётся отличным выбором.
Важно: практикуйтесь с основными сочетаниями клавиш и именуйте сеансы — это сразу повысит вашу продуктивность.
Похожие материалы
Xbox Game Pass на Android — как настроить и играть
Remote Play Together в Steam: как играть с друзьями
Активация ключа Steam — как добавить игру
Безопасный режим PS5: как войти и что делать
Исправление нестабильного Ethernet в Windows 10