Перейти к основному содержимому
Вернуться в категорию

Tmux и Screen: управление SSH-сессиями

Управление SSH-сессиями с помощью Tmux и GNU Screen. Установка, управление окнами и панелями, detach/attach, сохранение сессий и сравнение инструментов.

Время чтения: 12 мин Управление сервером
tmuxscreensshуправление сессиямитерминалlinuxмультиплексор

Содержание

Tmux и Screen: управление SSH-сессиями

Одна из главных проблем при работе на удалённых серверах — разрыв SSH-соединения. При потере соединения запущенные процессы завершаются. Tmux и GNU Screen — терминальные мультиплексоры, решающие эту проблему. В этом руководстве рассматриваются оба инструмента и объясняется, когда использовать каждый из них.

Зачем использовать Tmux или Screen?

Когда SSH-сессия прерывается:

  • Запущенные процессы сборки останавливаются
  • Загрузки прерываются
  • Долго выполняющиеся скрипты завершаются
  • Открытые текстовые редакторы закрываются

Tmux и Screen сохраняют сессии на стороне сервера. Даже если соединение прервётся, процессы продолжат работу в фоне. При повторном подключении вы продолжите с того места, где остановились.

Tmux — более современный, активно разрабатываемый инструмент. Screen старше и часто предустановлен. Знать оба полезно.

Установка Tmux

Ubuntu/Debian

hljs bash
sudo apt update
sudo apt install tmux -y

# Проверить версию
tmux -V

CentOS/AlmaLinux/RHEL

hljs bash
sudo dnf install tmux -y
# или на старых системах
sudo yum install tmux -y

Основы использования Tmux

Управление сессиями

hljs bash
# Запустить новую сессию
tmux

# Запустить именованную сессию
tmux new-session -s myproject
# или сокращённо
tmux new -s myproject

# Отсоединиться от сессии (detach) — процессы продолжают работу
# Ctrl+b, затем d

# Список существующих сессий
tmux list-sessions
# или сокращённо
tmux ls

# Повторно подключиться к сессии (attach)
tmux attach-session -t myproject
# или сокращённо
tmux attach -t myproject

# Подключиться к последней сессии
tmux attach

# Завершить сессию
tmux kill-session -t myproject

# Завершить все сессии
tmux kill-server

Клавиша-префикс Tmux

Все команды tmux начинаются с клавиши-префикса. Стандартный префикс: Ctrl+b

После нажатия префикса нажмите клавишу команды:

КомандаОписание
Ctrl+b dОтсоединиться от сессии
Ctrl+b cСоздать новое окно
Ctrl+b nСледующее окно
Ctrl+b pПредыдущее окно
Ctrl+b 0-9Переключиться на окно по номеру
Ctrl+b ,Переименовать окно
Ctrl+b &Закрыть текущее окно
Ctrl+b %Вертикальное разделение (вправо)
Ctrl+b "Горизонтальное разделение (вниз)
Ctrl+b стрелкиНавигация между панелями
Ctrl+b zПереключить полноэкранный режим панели
Ctrl+b [Режим прокрутки
Ctrl+b ?Справка

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

hljs bash
# Создать новое окно внутри tmux
# Ctrl+b, затем c

# Список окон
# Ctrl+b, затем w

# Переименовать окно
# Ctrl+b, затем ,

# Закрыть окно
# Ctrl+b, затем &

Управление панелями (Panes)

Панели позволяют разделить одно окно на несколько терминалов.

hljs bash
# Вертикальное разделение (рядом)
# Ctrl+b, затем %

# Горизонтальное разделение (сверху/снизу)
# Ctrl+b, затем "

# Навигация между панелями
# Ctrl+b, затем стрелки

# Переключить полноэкранный режим панели
# Ctrl+b, затем z

# Закрыть панель
# Ctrl+b, затем x

# Изменить размер панели
# Ctrl+b, затем Ctrl+стрелки

Конфигурация Tmux

Создайте ~/.tmux.conf для настройки:

hljs bash
nano ~/.tmux.conf
hljs bash
# Изменить префикс на Ctrl+a (как в Screen)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

# Включить поддержку мыши
set -g mouse on

# Начать нумерацию окон с 1
set -g base-index 1
setw -g pane-base-index 1

# Настроить строку состояния
set -g status-bg colour235
set -g status-fg white
set -g status-left '[#S] '
set -g status-right '%H:%M %d-%b-%y'

# Увеличить лимит истории
set -g history-limit 10000
hljs bash
# Перезагрузить конфигурацию
tmux source-file ~/.tmux.conf

Использование GNU Screen

Screen старше tmux, но часто предустановлен на многих системах.

Установка Screen

hljs bash
# Ubuntu/Debian
sudo apt install screen -y

# CentOS/AlmaLinux
sudo dnf install screen -y

Основные команды Screen

hljs bash
# Запустить новую сессию
screen

# Запустить именованную сессию
screen -S myproject

# Отсоединиться от сессии
# Ctrl+a, затем d

# Список сессий
screen -ls

# Повторно подключиться к сессии
screen -r myproject

# Подключиться по ID при нескольких сессиях
screen -r 12345.myproject

# Завершить сессию
screen -X -S myproject quit

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

Клавиша-префикс Screen — Ctrl+a:

КомандаОписание
Ctrl+a dОтсоединиться от сессии
Ctrl+a cСоздать новое окно
Ctrl+a nСледующее окно
Ctrl+a pПредыдущее окно
Ctrl+a "Список окон
Ctrl+a AПереименовать окно
Ctrl+a SГоризонтальное разделение
`Ctrl+a`
Ctrl+a TabПереключение между панелями
Ctrl+a [Режим прокрутки
Ctrl+a ?Справка

Сравнение Tmux и Screen

ФункцияTmuxScreen
Активная разработкаДаНет
Вертикальное разделениеДаДа (новые версии)
Поддержка мышиДаОграниченная
КонфигурацияМощнаяБазовая
ПредустановленНетЧасто да
Кривая обученияСредняяНизкая
Поддержка скриптовОтличнаяХорошая

Практические сценарии использования

Долго выполняющиеся процессы

hljs bash
# Запустить новую сессию
tmux new -s build

# Запустить долгую команду
make all

# Отсоединиться — процесс продолжается
# Ctrl+b d

# Проверить позже
tmux attach -t build

Мониторинг сервера в нескольких панелях

hljs bash
# Запустить сессию
tmux new -s monitoring

# Вертикальное разделение
# Ctrl+b %

# Мониторинг CPU в левой панели
htop

# Переключиться в правую панель (Ctrl+b правая стрелка)
# Мониторинг дискового I/O
iostat -x 2

Используйте автоматическое подключение осторожно. На некоторых системах это может конфликтовать с SSH-автоматизацией на основе ключей.

Расширьте tmux с помощью Tmux Plugin Manager (TPM). Плагин tmux-resurrect сохраняет сессии даже после перезагрузки системы.

Заключение

Tmux и Screen — незаменимые инструменты для управления удалёнными серверами. При запуске длительных процессов, задач сборки или команд непрерывного мониторинга на серверах REXE эти инструменты гарантируют сохранность вашей работы даже при разрыве SSH-соединения. Screen — более простая отправная точка для начинающих, но гибкость и функции Tmux делают его лучшим выбором в долгосрочной перспективе.