Серверное оборудование для бизнеса — надёжные решения для любых задач Подробнее →
Статья

Tmux для сисадмина: шпаргалка и конфиг

Tmux для сисадмина: шпаргалка и конфиг

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

Установка

# Debian/Ubuntu
apt install tmux -y

# RHEL/AlmaLinux
dnf install tmux -y

Основные понятия

Tmux строится на трёх уровнях иерархии:

  • Session — верхний уровень, живёт на сервере независимо от терминала
  • Window — вкладка внутри сессии, аналог вкладки в браузере
  • Pane — панель внутри окна, позволяет разделить экран

Базовые команды

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

tmux new -s work

Отключиться от сессии (detach), не убивая её: Ctrl+B, затем D

Посмотреть список сессий:

tmux ls

Подключиться к существующей сессии:

tmux attach -t work

Шпаргалка по горячим клавишам

Все команды tmux начинаются с префикса Ctrl+B (обозначается как <prefix>).

Сессии:

  • <prefix> d — detach от текущей сессии
  • <prefix> s — список всех сессий с переключением
  • <prefix> $ — переименовать сессию

Окна:

  • <prefix> c — создать новое окно
  • <prefix> , — переименовать окно
  • <prefix> n / <prefix> p — следующее/предыдущее окно
  • <prefix> 0-9 — переключиться на окно по номеру
  • <prefix> & — закрыть окно

Панели:

  • <prefix> % — разделить вертикально
  • <prefix> " — разделить горизонтально
  • <prefix> стрелки — переключаться между панелями
  • <prefix> z — развернуть панель на весь экран (и обратно)
  • <prefix> x — закрыть панель

Полезный конфиг ~/.tmux.conf

# Изменить префикс на Ctrl+A (удобнее для многих)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

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

# Мышь
set -g mouse on

# 256 цветов
set -g default-terminal "screen-256color"

# Увеличить историю прокрутки
set -g history-limit 10000

# Перезагрузить конфиг без рестарта
bind r source-file ~/.tmux.conf ; display "Config reloaded!"

# Разделение панелей на | и -
bind | split-window -h
bind - split-window -v

После редактирования конфига перезагрузите его прямо в tmux:

tmux source ~/.tmux.conf

Или нажмите <prefix> r, если вы добавили соответствующий биндинг.

Копирование текста

По умолчанию для выделения и копирования текста в tmux нужно зажать Shift при выделении мышью. Если включён режим mouse on, обычное выделение перехватывается tmux-ом. Альтернативно используйте vi-режим:

setw -g mode-keys vi

Тогда <prefix> [ входит в режим копирования, v начинает выделение, y копирует в буфер tmux.

Итог

Tmux — незаменимый инструмент для любого, кто регулярно работает с серверами по SSH. Даже базовое использование (запуск сессии и detach) уже экономит нервы при обрывах соединения. Потратьте 15 минут на настройку ~/.tmux.conf под себя, и вы получите удобную рабочую среду, которая всегда вас ждёт на сервере.

2 Ответа

  1. Спасибо за шпаргалку, распечатал и повесил рядом с монитором. Долго не мог запомнить разницу между окнами и панелями, теперь стало понятнее.

  1. Ещё советую поставить плагин tmux-resurrect — он сохраняет сессии между перезагрузками сервера, очень удобно когда много открытых окон с разными задачами.