tmux — одна из самых мощных утилит для управления терминальными сессиями, особенно на серверах.

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

📝 Топ‑20 полезных флагов и приёмов tmux#

  • -u — форсировать UTF‑8 (актуально для нестандартных окружений).
  • -L NAME — имя сокета (для параллельных tmux-сессий).
  • -S PATH — указать путь сокета явно.
  • -f FILE — использовать альтернативный конфиг.
  • -2 — принудительный режим 256 цветов.
  • -q — тихий запуск без ошибок.
  • -v — подробный лог запуска.
  • new -s NAME — создать новую сессию с именем.
  • attach -t NAME — подключиться к конкретной сессии.
  • kill-session -t NAME — убить сессию.
  • list-sessions — показать список сессий.
  • list-windows — показать окна текущей сессии.
  • list-panes — показать панели текущего окна.
  • switch-client -t NAME — переключиться на другую сессию.
  • rename-session -t OLD NEW — переименовать сессию.
  • source-file ~/.tmux.conf — перезагрузить конфигурацию.
  • display-message — показать текущее имя окна/сессии.
  • lock-session — заблокировать сессию паролем.
  • respawn-pane — перезапустить команду внутри панели.
  • choose-tree — интерактивный выбор окна или сессии.

🚀 Айсберг команд tmux — от базового к гуру#

🟢 Уровень 1 — База (разогрев)#

tmux

  • Запустить новую сессию

tmux new -s work

  • Создать именованную сессию

tmux attach

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

tmux attach -t work

  • Подключиться к конкретной сессии

tmux ls

  • Список всех сессий

🟡 Уровень 2 — Управление сессиями и окнами#

tmux kill-session -t work

  • Удалить конкретную сессию

tmux kill-server

  • Завершить все сессии

tmux rename-session -t 0 dev

  • Переименовать сессию

tmux new-window

  • Создать новое окно

tmux rename-window logs

  • Переименовать окно

🟠 Уровень 3 — Работа с панелями#

tmux split-window -h

  • Разделить окно по горизонтали

tmux split-window -v

  • Разделить окно по вертикали

tmux select-pane -L

  • Переключиться на левую панель

tmux select-pane -R

  • Переключиться на правую панель

tmux resize-pane -D 5

  • Уменьшить панель вниз на 5 строк

tmux resize-pane -U 5

  • Увеличить панель вверх на 5 строк

🔵 Уровень 4 — Горячие клавиши по умолчанию#

Основной префикс: Ctrl + b

  • c → создать новое окно
  • , → переименовать окно
  • n / p → следующее/предыдущее окно
  • w → интерактивный выбор окна
  • % → разделить экран по вертикали
  • " → разделить экран по горизонтали
  • o → переключиться между панелями
  • x → закрыть панель
  • z → развернуть панель на весь экран
  • space → циклически менять раскладку панелей
  • f → найти окно по имени
  • : → командная строка tmux
  • ? → справка по клавишам

🟣 Уровень 5 — Конфигурация и кастомизация#

nano ~/.tmux.conf

  • Файл конфигурации

Пример полезных настроек:

set -g mouse on                # Включить мышь
setw -g mode-keys vi           # VI-навигация
set -g history-limit 10000     # Глубокая история
bind r source-file ~/.tmux.conf \; display-message "Reloaded!"
bind | split-window -h         # Горячая клавиша: вертикальный сплит
bind - split-window -v         # Горячая клавиша: горизонтальный сплит
bind h select-pane -L          # Перемещение: влево
bind l select-pane -R          # Перемещение: вправо
bind j select-pane -D
bind k select-pane -U

Применение:

tmux source-file ~/.tmux.conf

🔴 Уровень 6 — Продвинутые сценарии#

tmux capture-pane -S -1000 \; save-buffer ~/logs.txt

  • Сохранить последние 1000 строк вывода

tmux send-keys -t work:0 'npm start' C-m

  • Отправить команду в окно 0 сессии work

tmux list-keys | grep split

  • Узнать текущие бинды для разделения панелей

tmux respawn-pane -k

  • Перезапустить текущую панель

tmux swap-pane -D

  • Поменять панели местами вниз

tmux choose-tree

  • Интерактивно выбрать окно/сессию

🟤 Уровень 7 — Гуру‑режим#

tmux new-session -d -s deploy 'npm run build'

  • Фоновая сборка проекта в tmux

tmux attach -t deploy

  • Подключение к фоновому процессу

tmux new-session -d -s watcher 'htop'

  • Создать фоновую сессию для мониторинга

tmux pipe-pane -o 'cat > ~/session.log'

  • Логировать всю активность панели

tmux display-message -p '#S:#I:#P'

  • Вывести имя сессии, окна и панели

tmux list-sessions | awk '{print $1}' | xargs -n 1 tmux kill-session -t

  • Убить все сессии одним вызовом

🧩 Бонус — практические сценарии#

Создать и подключиться к новой сессии:

tmux new -s dev

Восстановить прерванную SSH-сессию:

ssh user@server
tmux attach -t dev || tmux new -s dev

Мониторинг логов в одной панели и команды в другой:

tmux split-window -v
tail -f /var/log/syslog

Фоновая сборка проекта + возврат:

tmux new -d -s build 'make && make install'
tmux attach -t build

Мгновенный detach и уход:

Ctrl + b, d