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

Многозадачность в терминале Linux: 3 способа использовать несколько оболочек

6 min read Linux терминал Обновлено 26 Dec 2025
Многозадачность в терминале Linux
Многозадачность в терминале Linux

  • В терминале Linux можно параллельно работать с несколькими оболочками: виртуальные консоли, управление задачами в Bash и GNU Screen. Каждый метод подходит для разных сценариев: быстрые сессии, фоновые задачи в одной оболочке или полноценные «окна» в одном терминале.
  • Выбор зависит от ваших целей: быстро временно свернуть задачу — Bash job control; долгое хранение сессии на сервере — Screen (или tmux/Byobu); переключение на локальной машине — виртуальные консоли.

Быстрые ссылки

  • Виртуальные консоли
  • Управление задачами в Bash
  • GNU Screen
  • Альтернативы и когда что выбрать
  • Краткая шпаргалка команд и чек-листы

Что это даёт (цель статьи)

Эта статья показывает практические способы одновременной работы с несколькими оболочками в Linux, объясняет преимущества и ограничения каждого подхода и даёт краткие инструкции и шпаргалки для быстрого старта.

Виртуальные консоли

По умолчанию большинство дистрибутивов Linux поддерживают несколько виртуальных консольных терминалов (TTY). Переключаться между ними можно с помощью сочетания клавиш Ctrl-Alt и клавиш F1–F6. Обычно Ctrl-Alt-F7 возвращает вас к графическому окружению (X/Wayland), но это зависит от дистрибутива.

Переключение переводит вас к приглашению логина. Вы можете войти и запустить команду — она продолжит работать, даже если вы переключитесь на другую консоль. Это удобно для локальных машин, когда нужно держать отдельные сессии для разных задач.

Виртуальные консоли: переключение между tty1, tty2 и т.д.

Текст “tty1” означает терминал, доступный по Ctrl-Alt-F1; tty2 — по Ctrl-Alt-F2 и т.д. Количество доступных TTY и положение X-сервера могут отличаться в разных дистрибутивах.

Важно

  • Виртуальные консоли полезны на физической машине. На удалённом сервере через SSH они не применимы.
  • Сессии привязаны к локальной машине — при перезагрузке они закончатся.

Управление задачами в Bash

Bash предлагает встроенный механизм управления задачами (job control). Это позволяет запускать процессы в фоне, приостанавливать их и возвращать на передний план.

Чтобы запустить процесс в фоне, добавьте & в конце команды. Пример: чтобы открыть редактор Nano в фоне:

nano &

После запуска вы увидите номер задания (job ID) в квадратных скобках и PID процесса. Например, [1] — это job ID, а 3751 — PID.

Команда jobs показывает список текущих фоновых заданий. Знак + указывает задание, связанное с оболочкой последним, знак - — предпоследнее.

Пример вывода jobs с несколькими задачами

Команда fg возвращает задание на передний план. Если не указывать номер, используется задание с +. Чтобы вернуть задание 1:

fg %1

Возврат фонового задания в передний план

Горячие клавиши

  • Ctrl-Z — приостанавливает текущий процесс и переводит его в состояние приостановки (stopped). Затем можно использовать bg для продолжения в фоне или fg для возвращения.
  • bg %N — возобновляет задание N в фоне.
  • kill %N или kill PID — завершает задание.

Ограничения

  • Задачи, запущенные в фоне через &, привязаны к оболочке. Если закрыть оболочку или потерять SSH-сессию, процессы могут завершиться (SIGHUP), если не использовать дополнительные обходы (nohup, disown).
  • Для длительных задач на удалённых хостах лучше использовать Screen или tmux.

GNU Screen

GNU Screen — это «менеджер окон» внутри терминала. Он позволяет создавать несколько виртуальных «окон» (терминалов) в рамках одной сессии Screen, отсоединяться и затем повторно подключаться к той же сессии.

Screen может не быть установлен по умолчанию (например, в Ubuntu). Установить на Debian/Ubuntu можно так:

sudo apt-get install screen

Запустите команду screen и вы увидите приветственную информацию. Нажмите Space или Enter, чтобы попасть в нормальную оболочку — она будет работать внутри сессии Screen.

Стартовая заставка GNU Screen после запуска

Основные приёмы работы со Screen

  • Ctrl-a d — отсоединиться (detach) от сессии и вернуться в обычный терминал.
  • screen -r — повторно подключиться (reattach) к отсоединённой сессии.
  • Ctrl-a c — создать новое окно в текущей сессии.
  • Ctrl-a Ctrl-a — быстро переключиться между окнами.
  • Ctrl-a “ — показать список окон, выбрать нужное и нажать Enter.

Список окон в Screen для выбора активного окна

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

Альтернативы и когда что выбрать

Краткая подсказка по выбору метода:

  • Нужна сидячая локальная многозадачность — виртуальные консоли.
  • Нужно временно свернуть задачу внутри одной оболочки — Bash job control (&, bg, fg, Ctrl-Z).
  • Нужна надёжная удалённая сессия с окнами/панелями и доступом после разрыва соединения — Screen или tmux.
  • Нужен готовый пользовательский набор и улучшенная обёртка — Byobu (надстройка над Screen/tmux).

Альтернативы

  • tmux — современная альтернатива Screen с удобной конфигурацией и раздельными панелями. Рекомендуется для новых проектов.
  • Byobu — упрощает работу с Screen/tmux за счёт удобных горячих клавиш и панели состояния.

Когда этот подход может не подойти

  • Если вы запускаете процессы, которые должны пережить перезагрузку хоста — используйте systemd unit или cron @reboot.
  • Если нужна распределённая оркестрация задач — применяйте инструменты уровня кластера (Kubernetes, systemd-хелперы).

Краткая шпаргалка (cheat sheet)

  • Запустить в фоне: command &
  • Посмотреть задания: jobs
  • Приостановить текущую: Ctrl-Z
  • Продолжить в фоне: bg %N
  • Вернуть на передний план: fg %N
  • Отсоединиться от screen: Ctrl-a d
  • Повторно подключиться к screen: screen -r
  • Установить screen на Debian/Ubuntu: sudo apt-get install screen

Быстрый план выбора (decision tree)

flowchart TD
  A[Нужна сессия после разрыва SSH?] -->|Да| B[Использовать Screen или tmux]
  A -->|Нет| C[Работа на локальной машине]
  C -->|Нужно быстро переключаться между полноэкранными терминалами| D[Виртуальные консоли]
  C -->|Нужно просто запустить фоновую задачу| E[Bash '&, bg, fg']
  B --> F{Нужны панели и гибкие скрипты?}
  F -->|Да| G[tmux]
  F -->|Нет| H[Screen или Byobu]

Ролевые чек‑листы

Для администратора сервера

  • Установить screen или tmux.
  • Создать отдельного пользователя или использовать sudo при необходимости.
  • Настроить автозапуск важных сервисов через systemd.
  • Обучить пользователей detach/reattach и проверке журналов.

Для разработчика локальной машины

  • Использовать виртуальные консоли для разделения задач.
  • Применять bg/fg для фоновых сборок и тестов.
  • Для длительных тестов на удалённом хосте — использовать tmux/screen.

Ментальные модели и эвристики

  • Если сессия должна существовать независимо от терминала — думайте Screen/tmux.
  • Если нужно просто не блокировать текущую оболочку — ставьте в фон (&) или приостанавливайте Ctrl-Z.
  • Если работаете локально и хотите несколько полноэкранных терминалов — переключайтесь по Ctrl-Alt-F*.

Мини‑методология: как внедрить в рабочий процесс

  1. Оцените длительность и важность задачи.
  2. Для коротких задач используйте фон (&). Для долгих — tmux/screen.
  3. Настройте привычные сочетания клавиш и alias-ы (например, alias s=’screen -r’).
  4. Обучите коллег и добавьте инструкции в README команды.

1‑строчный глоссарий

  • TTY: виртуальная консоль на локальной машине.
  • job: задание в Bash с собственным job ID.
  • PID: идентификатор процесса.
  • detach/reattach: отсоединиться/подключиться к сессии Screen/tmux.

Критерии приёмки

  • Можете отсоединяться от сессии и повторно подключаться без потери запущенных процессов.
  • Можете восстановить фоновую задачу в передний план через fg.
  • Есть документированная рекомендация для команды: когда использовать виртуальные консоли, Bash jobs и screen/tmux.

Часто задаваемые вопросы

В чём разница между Screen и tmux?

Screen — старый и надёжный инструмент; tmux чаще предпочитают за гибкость, удобную конфигурацию и более активное сообщество.

Как безопасно запустить задачу, если я могу потерять SSH-соединение?

Используйте screen/tmux или запуск через nohup и disown, либо настройте systemd unit для важной задачи.

Можно ли использовать виртуальные консоли на сервере по SSH?

Нет — виртуальные консоли привязаны к физическому терминалу машины. По SSH используйте screen или tmux.


Мы уже писали более подробно о GNU Screen и рассматривали Byobu — удобную надстройку, которая упрощает работу с Screen/tmux.

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

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

Показать папку Library на macOS
macOS

Показать папку Library на macOS

Управление комнатами в Google Home
Умный дом

Управление комнатами в Google Home

Как уменьшить объём данных и трафика потоковых сервисов
Технологии

Как уменьшить объём данных и трафика потоковых сервисов

LinkedIn Learning — полное руководство
Онлайн-обучение

LinkedIn Learning — полное руководство

Просмотр раздела Linux из Windows — Ext2explore
Инструкции

Просмотр раздела Linux из Windows — Ext2explore

Как навсегда удалить данные с ПК перед продажей
Безопасность IT

Как навсегда удалить данные с ПК перед продажей