Tmux и Screen: управление SSH-сессиями
Управление SSH-сессиями с помощью Tmux и GNU Screen. Установка, управление окнами и панелями, detach/attach, сохранение сессий и сравнение инструментов.
Содержание
Tmux и Screen: управление SSH-сессиями
Одна из главных проблем при работе на удалённых серверах — разрыв SSH-соединения. При потере соединения запущенные процессы завершаются. Tmux и GNU Screen — терминальные мультиплексоры, решающие эту проблему. В этом руководстве рассматриваются оба инструмента и объясняется, когда использовать каждый из них.
Зачем использовать Tmux или Screen?
Когда SSH-сессия прерывается:
- Запущенные процессы сборки останавливаются
- Загрузки прерываются
- Долго выполняющиеся скрипты завершаются
- Открытые текстовые редакторы закрываются
Tmux и Screen сохраняют сессии на стороне сервера. Даже если соединение прервётся, процессы продолжат работу в фоне. При повторном подключении вы продолжите с того места, где остановились.
Tmux — более современный, активно разрабатываемый инструмент. Screen старше и часто предустановлен. Знать оба полезно.
Установка Tmux
Ubuntu/Debian
sudo apt update
sudo apt install tmux -y
# Проверить версию
tmux -V
CentOS/AlmaLinux/RHEL
sudo dnf install tmux -y
# или на старых системах
sudo yum install tmux -y
Основы использования Tmux
Управление сессиями
# Запустить новую сессию
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 ? | Справка |
Управление окнами
# Создать новое окно внутри tmux
# Ctrl+b, затем c
# Список окон
# Ctrl+b, затем w
# Переименовать окно
# Ctrl+b, затем ,
# Закрыть окно
# Ctrl+b, затем &
Управление панелями (Panes)
Панели позволяют разделить одно окно на несколько терминалов.
# Вертикальное разделение (рядом)
# Ctrl+b, затем %
# Горизонтальное разделение (сверху/снизу)
# Ctrl+b, затем "
# Навигация между панелями
# Ctrl+b, затем стрелки
# Переключить полноэкранный режим панели
# Ctrl+b, затем z
# Закрыть панель
# Ctrl+b, затем x
# Изменить размер панели
# Ctrl+b, затем Ctrl+стрелки
Конфигурация Tmux
Создайте ~/.tmux.conf для настройки:
nano ~/.tmux.conf
# Изменить префикс на 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
# Перезагрузить конфигурацию
tmux source-file ~/.tmux.conf
Использование GNU Screen
Screen старше tmux, но часто предустановлен на многих системах.
Установка Screen
# Ubuntu/Debian
sudo apt install screen -y
# CentOS/AlmaLinux
sudo dnf install screen -y
Основные команды Screen
# Запустить новую сессию
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
| Функция | Tmux | Screen |
|---|---|---|
| Активная разработка | Да | Нет |
| Вертикальное разделение | Да | Да (новые версии) |
| Поддержка мыши | Да | Ограниченная |
| Конфигурация | Мощная | Базовая |
| Предустановлен | Нет | Часто да |
| Кривая обучения | Средняя | Низкая |
| Поддержка скриптов | Отличная | Хорошая |
Практические сценарии использования
Долго выполняющиеся процессы
# Запустить новую сессию
tmux new -s build
# Запустить долгую команду
make all
# Отсоединиться — процесс продолжается
# Ctrl+b d
# Проверить позже
tmux attach -t build
Мониторинг сервера в нескольких панелях
# Запустить сессию
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 делают его лучшим выбором в долгосрочной перспективе.
Связанные статьи
Подключение к VDS по SSH: PuTTY, терминал и SSH-ключи
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Подключение к Windows VDS по RDP: полное руководство
Пошаговое руководство по RDP-подключению к Windows Server VDS: настройка, безопасность NLA, правило фильтрации Path Panel и устранение неполадок.
Смена ОС VDS-сервера: пошаговое руководство (Reinstall)
Смена операционной системы VDS через панель REXE: советы по резервному копированию, поддерживаемые дистрибутивы Linux и версии Windows Server.