LinuxRuLinux без лишней теории
Терминал

tmux в Linux: сессии, окна, панели и горячие клавиши

Редакция LinuxRu9 мин чтенияИнструкции

tmux держит оболочки и запущенные в них программы живыми после закрытия терминала или обрыва SSH: создайте сессию командой tmux new -s work, отключитесь клавишами Ctrl+b d и вернитесь через tmux attach -t work. Ниже команды для сессий, окон и панелей, таблица горячих клавиш и готовый .tmux.conf.

tmux в Linux: сессии, окна, панели и горячие клавиши
Фото: Avelino0, CC BY-SA 4.0, Wikimedia Commons
Содержание
  1. Как устроен tmux
  2. Установка
  3. Сессии
  4. Окна и панели
  5. Горячие клавиши
  6. Прокрутка и копирование
  7. tmux по SSH
  8. Файл .tmux.conf
  9. Частые проблемы
  10. Частые вопросы

Что такое tmux и из чего он состоит

tmux - терминальный мультиплексор: внутри одного окна терминала или одного SSH-подключения он держит несколько оболочек и не даёт им умереть, когда вы закрыли терминал или потеряли связь. Запустили долгую сборку на сервере, отключился Wi-Fi, переподключились - сборка идёт дальше, вывод на месте.

Команда tmux запускает фоновый сервер, а терминал становится его клиентом. Закрыли клиент - сервер и программы в нём живут дальше. Внутри сервера три уровня:

  • Сессия - набор окон под одним именем, например work или deploy. К сессии можно отключиться и потом вернуться.
  • Окно - аналог вкладки. Номера окон видны в строке состояния внизу.
  • Панель - часть окна. Окно делится на панели по горизонтали и вертикали, в каждой своя оболочка.

Все действия выполняются через префикс: по умолчанию это Ctrl+b. Нажали и отпустили префикс, затем нажали клавишу команды. Дальше в тексте запись Ctrl+b d означает именно такую последовательность, а не одновременное нажатие трёх клавиш.

Установка tmux в Ubuntu, Fedora и Arch

Пакет называется одинаково во всех популярных дистрибутивах:

# Debian 13, Ubuntu 26.04, Linux Mint
sudo apt install tmux
# Fedora 44
sudo dnf install tmux
# Arch Linux, CachyOS, EndeavourOS
sudo pacman -S tmux
# проверить версию
tmux -V

Версии в репозиториях на октябрь 2026 года заметно отличаются. В Debian 13 стоит 3.5a (в trixie-backports есть 3.7c), в Ubuntu 26.04 LTS - 3.6a, в Fedora 44 с обновлениями 3.7c, в Arch уже 3.8. Клавиши и команды из статьи работают во всех этих версиях, а плавающие панели и встроенные темы есть только в 3.8.

Запуск без аргументов создаёт сессию с номером 0, внизу появляется строка состояния с именем сессии и списком окон.

Сессии: создать, отключиться, вернуться

Безымянные сессии быстро путаются, поэтому имя лучше задавать сразу. Основные команды выполняются в обычной оболочке, вне tmux или внутри него:

# новая сессия с именем work
tmux new -s work
# список сессий
tmux ls
# подключиться к сессии work
tmux attach -t work
# короткая форма: подключиться к последней сессии
tmux a
# подключиться, если сессия есть, иначе создать
tmux new -A -s work
# подключиться и выкинуть других клиентов этой сессии
tmux attach -d -t work
# завершить сессию
tmux kill-session -t work
# завершить вообще всё: сервер и все сессии
tmux kill-server

Отключиться от сессии, оставив её работать, можно клавишами Ctrl+b d (detach). Закрыть окно терминала крестиком тоже безопасно: процессы внутри tmux не получат сигнал завершения. А вот exit в последней оболочке сессии закрывает саму сессию.

Переключение между сессиями

Изнутри tmux удобнее всего Ctrl+b s: откроется дерево сессий с окнами, стрелками выбираете нужную и жмёте Enter. Клавиши Ctrl+b ( и Ctrl+b ) листают сессии по кругу, Ctrl+b $ переименовывает текущую.

Окна и панели: деление экрана

Окна делят задачи внутри сессии (редактор, логи, htop), панели нужны, когда два вывода надо видеть одновременно.

Окна

Ctrl+b c создаёт окно, Ctrl+b , переименовывает его, Ctrl+b n и Ctrl+b p переключают на следующее и предыдущее, цифры Ctrl+b 0...9 открывают окно по номеру, Ctrl+b w показывает список всех окон всех сессий. Закрыть окно можно через exit в каждой его панели или клавишами Ctrl+b & с подтверждением.

Панели

Деление: Ctrl+b % режет окно на левую и правую части, Ctrl+b " на верхнюю и нижнюю. Запомнить проще так: знак процента похож на вертикальную черту между двумя кружками. Переход между панелями: Ctrl+b и стрелка в нужную сторону, или Ctrl+b o по кругу. Ctrl+b q на секунду показывает номера панелей, нажатие цифры в этот момент переводит в нужную.

Размер меняется сочетанием Ctrl+b, затем Ctrl+стрелка (шаг в одну клетку) или Alt+стрелка (шаг в пять клеток). Ctrl+b z разворачивает панель на всё окно и возвращает обратно, это самая полезная клавиша, когда нужно прочитать длинную строку лога. Ctrl+b Space перебирает готовые раскладки, Ctrl+b ! выносит панель в отдельное окно, Ctrl+b x закрывает её.

Те же действия доступны командами, что удобно в скриптах:

# поделить по вертикали и открыть новую панель в текущем каталоге
tmux split-window -h -c "#{pane_current_path}"
# выровнять панели сеткой
tmux select-layout tiled
# одновременный ввод во все панели окна (например, на нескольких серверах)
tmux set-window-option synchronize-panes on

Горячие клавиши tmux: шпаргалка

Стандартные привязки без собственного конфига. Если меняли префикс, подставьте свой.

КлавишиДействие
Ctrl+b dОтключиться от сессии (она продолжает работать)
Ctrl+b sДерево сессий и переключение
Ctrl+b $Переименовать сессию
Ctrl+b cНовое окно
Ctrl+b ,Переименовать окно
Ctrl+b n / pСледующее / предыдущее окно
Ctrl+b 0-9Окно по номеру
Ctrl+b wСписок окон
Ctrl+b %Разделить на левую и правую панели
Ctrl+b "Разделить на верхнюю и нижнюю панели
Ctrl+b стрелкаПерейти в соседнюю панель
Ctrl+b zРазвернуть панель на всё окно и обратно
Ctrl+b xЗакрыть панель
Ctrl+b [Режим прокрутки и копирования
Ctrl+b ]Вставить последний скопированный буфер
Ctrl+b :Командная строка tmux
Ctrl+b ?Все привязки клавиш

Полный актуальный список для вашей версии выводит Ctrl+b ? или команда tmux list-keys в оболочке. Выход из этого списка по q.

Прокрутка истории и копирование текста

Колесо мыши в tmux без настройки часто листает историю команд оболочки вместо вывода, и новички решают, что прокрутки нет. Она есть: Ctrl+b [ включает режим копирования, дальше работают стрелки, PgUp, PgDn, поиск по Ctrl+s (в раскладке emacs) или / (в раскладке vi). Выход по q.

Копирование в режиме emacs (по умолчанию): поставить курсор, нажать Ctrl+Space, выделить стрелками, нажать Alt+w. Текст попадёт в буфер tmux, вставка через Ctrl+b ]. Если привычнее vim, включите vi-раскладку в конфиге (пример ниже), тогда выделение начинается клавишей v, а копирование y.

Чтобы мышь листала вывод и выделяла текст, нужна опция mouse. В tmux 3.8 по списку изменений она включена по умолчанию, в версиях из Debian и Ubuntu её надо включить самому: Ctrl+b :, затем set -g mouse on. С включённой мышью обычное выделение терминала перехватывает tmux; чтобы выделить текст средствами самого терминала, держите Shift (в Konsole, GNOME Terminal, Kitty, Alacritty это работает именно так).

Глубина истории по умолчанию 2000 строк на панель. Для логов этого мало, увеличьте history-limit в конфиге. До версии 3.7 новое значение действует только на панели, созданные после изменения, начиная с 3.7 оно применяется и к уже открытым.

Работа по SSH без обрывов

Главный сценарий: длинная операция на сервере, которую нельзя прерывать, например обновление дистрибутива или rsync большого архива. Порядок такой:

  1. Подключитесь к серверу и сразу войдите в именованную сессию: tmux new -A -s main.
  2. Запустите задачу внутри tmux.
  3. Если связь оборвалась, подключитесь снова и выполните ту же команду tmux new -A -s main: она найдёт сессию и подключит к ней.

Можно сократить до одной команды на своей машине. Ключ -t обязателен, без него ssh не выделит терминал и tmux ответит ошибкой open terminal failed: not a terminal:

ssh -t user@server tmux new -A -s main

Чтобы не набирать это каждый раз, добавьте блок в ~/.ssh/config. Опция RemoteCommand выполнит tmux при входе, а RequestTTY заменит ключ -t:

Host srv
    HostName 203.0.113.10
    User admin
    RequestTTY yes
    RemoteCommand tmux new -A -s main

После этого ssh srv сразу открывает сессию main. Для разовых входов без tmux создайте второй Host-блок без RemoteCommand. Подробнее о файле конфигурации клиента в статье про SSH-клиент в Linux, а про защиту самого сервера в материале по настройке sshd.

tmux спасает от обрыва SSH, но не от перезагрузки сервера: после ребута все сессии исчезают. Если задача должна пережить перезагрузку, оформите её как службу или таймер systemd, а tmux оставьте для интерактивной работы.

Вложенный tmux

Если tmux запущен и у вас локально, и на сервере, префикс Ctrl+b поймает внешний. Чтобы отправить его во внутренний, нажмите префикс дважды: Ctrl+b Ctrl+b, затем клавишу команды. Другой вариант: локально переназначить префикс на Ctrl+a, а на серверах оставить стандартный.

Настройка .tmux.conf

tmux читает пользовательский конфиг из ~/.tmux.conf или из ~/.config/tmux/tmux.conf (поддержка XDG-пути появилась в версии 3.1). Файла по умолчанию нет, его создают вручную. Ниже рабочий минимум с комментариями, который можно взять целиком:

# префикс Ctrl+a вместо Ctrl+b
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# мышь, история, нумерация окон с единицы
set -g mouse on
set -g history-limit 50000
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on

# цвета и быстрая реакция на Esc (важно для vim)
set -g default-terminal "tmux-256color"
set -sg escape-time 10

# понятное деление: | и -, новая панель в текущем каталоге
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

# vi-клавиши в режиме копирования
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection-and-cancel

# перечитать конфиг по префикс + r
bind r source-file ~/.tmux.conf \; display "config reloaded"

Изменения не применяются к уже запущенному серверу сами. Перечитайте файл командой tmux source-file ~/.tmux.conf или привязкой префикс r из примера. Если после правки tmux не стартует, запустите его с явным пустым конфигом, чтобы проверить, виноват ли файл: tmux -f /dev/null new -s test.

Плагины

Плагины обычно ставят через менеджер TPM. Чаще всего берут tmux-resurrect и tmux-continuum: они сохраняют раскладку окон и рабочие каталоги и восстанавливают их после перезагрузки, но не сами процессы.

Когда tmux ведёт себя странно

  • no server running on /tmp/tmux-1000/default. Сессий нет, сервер не запущен. Это не ошибка: создайте сессию через tmux new -s имя. Если сессия точно была, проверьте, тот ли пользователь: у root и у вас разные серверы.
  • missing or unsuitable terminal: tmux-256color. На старой системе нет описания терминала в terminfo. Поставьте пакет ncurses-term (Debian, Ubuntu) или замените в конфиге значение на screen-256color.
  • Блёклые цвета в vim и neovim. Добавьте поддержку truecolor для внешнего терминала: set -as terminal-features ",xterm-256color:RGB".
  • Esc в vim срабатывает с задержкой. В версиях до 3.5 стандартный escape-time равен 500 мс, это хорошо заметно. С 3.5 по умолчанию 10 мс; на Debian 12 и старее задайте значение в конфиге, как в примере выше.
  • Скопированный текст не попадает в системный буфер. Нужна опция set -g set-clipboard on и поддержка OSC 52 в эмуляторе терминала. В Wayland-сессии можно передавать выделение в wl-copy командой copy-pipe-and-cancel.

Если хочется освоить терминал глубже, загляните в горячие клавиши терминала и bash и в подборку основных команд Linux. Полное описание опций и форматов есть в официальном man tmux и в вики проекта.

Частые вопросы

Как выйти из tmux, не закрывая программы?

Нажмите Ctrl+b, отпустите и нажмите d. Сессия отключится и продолжит работать в фоне, вернуться можно командой tmux attach или tmux a.

Как прокрутить вывод вверх в tmux?

Нажмите Ctrl+b [ и листайте стрелками или PgUp. Выход из режима по q. Чтобы работало колесо мыши, включите set -g mouse on (в tmux 3.8 опция включена по умолчанию).

Чем tmux отличается от screen?

Оба держат сессии после отключения. У tmux удобнее панели, понятнее конфиг и активнее разработка, поэтому для новых систем обычно выбирают его. GNU screen по-прежнему есть в репозиториях и пригодится на старых серверах.

Сохраняются ли сессии tmux после перезагрузки?

Нет, сервер tmux живёт в памяти. Плагины tmux-resurrect и tmux-continuum восстанавливают раскладку и каталоги, но не запущенные процессы.

Где лежит конфиг tmux?

В ~/.tmux.conf или ~/.config/tmux/tmux.conf. Системный файл /etc/tmux.conf читается первым, если существует. После правки выполните tmux source-file ~/.tmux.conf.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.