TMUX — терминальный мультиплексор.

Установка, настройка, эксплуатация.
Ответить
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

TMUX — терминальный мультиплексор.

Сообщение root »

Оглавление
Темы
TMUX — терминальный мультиплексор в Fedora
Пример конфигурационного файла .tmux.conf
Автоматический запуск tmux при входе в систему
Некоторые клавиши данной конфигурации
Полезные приёмы и управление в tmux
Введение
tmux — это современный терминальный мультиплексор, позволяющий запускать несколько сессий в одном окне терминала, переключаться между ними и продолжать работу после отключения от системы (например, по SSH).
tmux полностью заменяет старую утилиту screen и активно используется администраторами Linux-систем.
1. Установка tmux
В Fedora пакет доступен в стандартных репозиториях.

Код: Выделить всё

sudo dnf install tmux
Проверить версию:

Код: Выделить всё

tmux -V

2. Основные возможности
tmux позволяет:
  • создавать и управлять несколькими сессиями;
  • делить терминал на окна и панели;
  • отсоединяться от сессии и подключаться к ней позже;
  • выполнять команды tmux из любого терминала;
  • сохранять рабочее состояние при обрыве соединения SSH.

3. Основные команды и горячие клавиши
После запуска tmux все комбинации начинаются с префикса Ctrl + b.
Комбинация Описание
Ctrl+b c Создать новое окно
Ctrl+b n / p Перейти к следующему / предыдущему окну
Ctrl+b % Разделить экран вертикально
Ctrl+b " Разделить экран горизонтально
Ctrl+b x Закрыть текущую панель
Ctrl+b d Отсоединиться от сессии (detach)
tmux attach Подключиться к существующей сессии

4. Управление сессиями
Создать новую сессию:

Код: Выделить всё

tmux new -s work
Посмотреть список сессий:

Код: Выделить всё

tmux ls
Подключиться к сессии:

Код: Выделить всё

tmux attach -t work
Закрыть сессию:

Код: Выделить всё

tmux kill-session -t work
Закрыть все сессии:

Код: Выделить всё

tmux kill-server

5. Конфигурация tmux
Файл конфигурации хранится в домашней директории:

Код: Выделить всё

~/.tmux.conf
Пример минимальной настройки:

Код: Выделить всё

# Изменить префикс на Ctrl+a (как в screen)
unbind C-b
set-option -g prefix C-a
bind C-a send-prefix
# Подсветка активного окна
set -g window-status-current-style bg=green,fg=black
# Возможность прокрутки мышью
set -g mouse on
Применить изменения без перезапуска:

Код: Выделить всё

tmux source ~/.tmux.conf

6. Автозапуск сессий
Для автоматического восстановления рабочих сессий при входе в систему можно добавить в `~/.bash_profile`:

Код: Выделить всё

if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
    tmux attach -t main || tmux new -s main
fi

7. Полезные советы
  • Используйте Ctrl+b : для ввода команд прямо в tmux.
  • Для копирования текста — включите режим копирования Ctrl+b [ .
  • Можно запустить разные задачи в отдельных панелях: мониторинг, логи, обновления и т.д.
  • tmux отлично сочетается с `ssh`, `htop`, `mc`, `vim` и другими консольными утилитами.

Заключение
tmux — мощный инструмент для работы в терминале, который повышает удобство администрирования и позволяет сохранять рабочие сессии при любых сбоях соединения.
На современных версиях Fedora он устанавливается без проблем и работает стабильно "из коробки".
Рекомендуется добавить базовую конфигурацию в `~/.tmux.conf` и освоить основные комбинации клавиш.
Последний раз редактировалось root 12 авг 2026 16:41, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


Продолжение темы: пользовательская конфигурация tmux (адаптировано под Fedora 40+)
Ниже приведён адаптированный вариант рабочей конфигурации tmux, протестированный на Fedora 40 (tmux 3.3a/3.4).
Файл сохраняет оригинальную структуру и стиль, но приведён к современным синтаксическим требованиям.

Код: Выделить всё

# ----------------------------------------------
# TMUX конфигурация (Fedora 40+, tmux 3.3–3.4)
# Версия 2 (адаптация оригинала)
# ----------------------------------------------

# Режим клавиш emacs
set -gw mode-keys emacs
set -g status-keys emacs

# Поддержка UTF-8
set -g utf8 on

# Управление экраном
setw -g alternate-screen on
set -s escape-time 50

# Время отображения сообщений
set -g display-time 2000
set -g display-panes-time 3000
set -g repeat-time 0

# История
set -g history-limit 10000

# ----------------------------------------------
# Статус-бар
# ----------------------------------------------
set -g status-justify centre
set -g status-style bg=black,fg=cyan
set -g status-interval 5
set -g status-left-length 30
set -g status-right-length 30
set -g status-left '#[fg=magenta]Name Session:#S'
set -g status-right '#[fg=magenta]#(cut -d " " -f 1-3 /proc/loadavg)#[default]'

setw -g monitor-activity on
set -g window-status-current-style bg=green,fg=black,bold
set -g window-status-style fg=colour243

set -g pane-border-style fg=green
set -g pane-active-border-style fg=green

# Заголовки окон
set -g set-titles on
set -g set-titles-string '#S:#I.#P #W'
setw -g automatic-rename on

# Тип терминала
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
set -g default-terminal "xterm-256color"
set -sg escape-time 0

# Часы
setw -g clock-mode-colour cyan
setw -g clock-mode-style 24

# Мониторинг активности
setw -g monitor-activity on
set -g visual-activity on
set -g visual-bell off

# Оформление сообщений
setw -g mode-style bg=magenta,fg=black
set -g message-style bg=magenta,fg=black

# Индексация окон и панелей с 1
set -g base-index 1
setw -g pane-base-index 1

# ----------------------------------------------
# Управление мышью и префиксом
# ----------------------------------------------
unbind %
unbind '"'
unbind x
unbind C-o
unbind k
unbind j
unbind h
unbind l

# Префикс на клавишу `
set -g prefix `
bind ` send-prefix

# Включение мыши
bind m \
    set -g mouse on \;\
    display 'Mouse: ON'

# Отключение мыши
bind M \
    set -g mouse off \;\
    display 'Mouse: OFF'

# ----------------------------------------------
# Управление окнами и панелями
# ----------------------------------------------
# Зум панели
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom

# Восстановление
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom

# Перечитать конфиг
unbind R
bind R source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded"

# Быстрое редактирование конфига
bind E split-window -h "emacs ~/.tmux.conf"

# Управление окнами и панелями
bind H split-window -v
bind V split-window -h
bind a send-keys `
bind X kill-pane
bind K confirm-before kill-window
bind N rotate-window -U
bind P rotate-window -D
bind L clear-history

# Переключение между панелями Alt + стрелки
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Переключение окон Shift + стрелки
bind -n S-Left previous-window
bind -n S-Right next-window
# Обмен панелями
bind F swap-pane -U
bind D swap-pane -D
# Двойное нажатие префикса — переход к последнему окну
bind ` last-window

Изменения и примечания:
  1. Опции status-bg, status-fg, pane-border-fg заменены на status-style и pane-border-style (новый синтаксис tmux ≥3.2).
  2. Удалён устаревший параметр status-utf8 — теперь UTF-8 включён по умолчанию.
  3. Добавлены объединённые конструкции

    Код: Выделить всё

    mode-style
    и

    Код: Выделить всё

    message-style
  4. Обновлён синтаксиси(вместо старых)

    Код: Выделить всё

    set-window-option
  5. Конфигурация полностью совместима с tmux 3.3a и 3.4.

Заключение
Конфигурация обеспечивает удобный режим работы, поддержку мыши, быструю навигацию между окнами и панелями, а также оптимизирована под новые версии Fedora.
Если tmux используется для постоянных SSH-сессий, рекомендуется добавить автоматический запуск tmux при входе в систему (см. первый блок темы).

Продолжение темы: автоматический запуск и организация tmux-сессий
SSH и локальные сценарии Fedora
tmux можно запускать автоматически при подключении по SSH или при входе в систему локально.
Ниже представлены два проверенных варианта, которые можно комбинировать в зависимости от задач.
1. Автозапуск tmux при входе по SSH
Для удалённого администрирования удобно, когда tmux автоматически подключается при входе на сервер.
Добавьте следующую функцию в ~/.bash_profile или ~/.bashrc:

Код: Выделить всё

function TMUX_CONNECTION() {
    if [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
        WHOAMI=$(whoami)
        if tmux has-session -t $WHOAMI 2>/dev/null; then
            tmux attach-session -t $WHOAMI
        else
            tmux new-session -s $WHOAMI -d
        fi
    fi
}
TMUX_CONNECTION
Что делает функция:
  1. Проверяет, запущен ли tmux (чтобы не создавать вложенные сессии).
  2. Активируется только при SSH-подключении.
  3. Использует имя пользователя как имя tmux-сессии.
  4. При наличии сессии — подключается к ней, иначе создаёт новую.
Такое решение удобно для серверов Fedora — при каждом входе вы автоматически попадаете в свою tmux-сессию,
которая сохраняет состояние окон и процессов между подключениями.

2. Расширенный автозапуск рабочих окон
Для постоянной работы в консоли можно использовать отдельный скрипт, который создаёт несколько окон и панелей.
Создайте файл ~/bin/tmux-start.sh:

Код: Выделить всё

#!/bin/bash
# -----------------------------------------
# Автозапуск tmux-сессии с рабочими окнами
# Fedora 40+
# -----------------------------------------

SESSION="main"

# Проверяем наличие сессии
tmux has-session -t $SESSION 2>/dev/null
if [ $? != 0 ]; then
    echo "Создание новой сессии: $SESSION"
    tmux new-session -d -s $SESSION -n sys

    # Окно 1 — системное (мониторинг)
    tmux send-keys -t $SESSION:sys 'htop' C-m

    # Окно 2 — логи
    tmux new-window -t $SESSION -n logs
    tmux send-keys -t $SESSION:logs 'cd /var/log && sudo tail -f messages' C-m

    # Окно 3 — обновления
    tmux new-window -t $SESSION -n update
    tmux send-keys -t $SESSION:update 'sudo dnf upgrade -y' C-m

    # Окно 4 — рабочее (пользователь / root)
    tmux new-window -t $SESSION -n work
    tmux split-window -h -t $SESSION:work
    tmux send-keys -t $SESSION:work.0 'cd ~ && ls' C-m
    tmux send-keys -t $SESSION:work.1 'sudo -s' C-m

    tmux select-window -t $SESSION:work
fi

# Подключаемся
tmux attach -t $SESSION
Сделайте его исполняемым:

Код: Выделить всё

chmod +x ~/bin/tmux-start.sh
При необходимости можно добавить вызов в ~/.bash_profile:

Код: Выделить всё

[[ $- != *i* ]] && return
[ -z "$TMUX" ] && exec ~/bin/tmux-start.sh
Теперь при каждом входе создаётся стандартное рабочее окружение с несколькими окнами.
3. Пример структуры рабочих окон
Окно Назначение
sys Мониторинг (htop, iostat, free)
logs Просмотр системных логов
update Обновление пакетов Fedora
work Рабочая зона (пользователь и root)

Заключение
Минимальный вариант TMUX_CONNECTION() идеально подходит для SSH-сессий,
а скрипт tmux-start.sh — для полноценного постоянного окружения администратора.
Оба способа совместимы и могут использоваться одновременно:
функция — для быстрого входа, скрипт — для сборки рабочей среды.
Последний раз редактировалось root 12 авг 2026 16:44, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Сообщение root »


"`"главный префикс - клавиша или сочетание с префикс начинаются команды tmux (далее команды приведены без него)
`Последнее окно
Rперечитать конфигурационный файл,
MРедактирование конфигурационного файла
Hразделить окно по горизонтали
Vразделить окно по вертикали
aнабрать символ "`"
XУбить панель или Ctrl+d
KСпрашивает закрывать или нет панель
Nпереход по окнам
Pпереход по окнам
LОчистить историю
Alt + стрелкипереключения между панелями
Shift + стрелкипереключения между окнами
FПоменять панели местами
DПоменять панели местами
Последний раз редактировалось root 12 авг 2026 16:51, всего редактировалось 1 раз.
Аватара пользователя
root
Site Admin
Сообщения: 501
Зарегистрирован: 15 авг 2026 01:31

Re: TMUX — терминальный мультиплексор.

Сообщение root »


Продолжение темы: практическая работа в tmux
tmux — мощный терминальный мультиплексор, но эффективность работы во многом зависит от того,
насколько быстро вы управляете окнами, панелями и копируете информацию.
Здесь собраны основные команды и практические приёмы для администраторов Fedora.

1. Базовые комбинации клавиш

По умолчанию в конфигурации используется префиксная клавиша:

Код: Выделить всё

`  (обратная кавычка, задано в .tmux.conf)
После нажатия префикса выполняется команда tmux.
Комбинация Действие
` + c Создать новое окно
` + , Переименовать текущее окно
` + w Просмотр и выбор окна
Alt + ← / → Переключение между панелями без префикса
Shift + ← / → Переключение между окнами

2. Копирование текста (Copy Mode)

tmux имеет собственный буфер обмена.
Для копирования текста:
  1. Войти в режим копирования:
  2. Перемещаться стрелками или клавишами hjkl (если включён режим emacs — стрелками).
  3. Начать выделение: Space
  4. Завершить и скопировать: Enter
Вставка из буфера tmux: Если включён mouse mode, можно использовать мышь для выделения и вставки текста.
Это поведение включается клавишей ` + m, как указано в твоём конфиге.

3. Разделение окон и панелей

Используя комбинации из твоего файла .tmux.conf:
Команда Назначение
` + H Разделить окно по горизонтали
` + V Разделить окно по вертикали
` + X Закрыть панель
` + K Закрыть текущее окно (с подтверждением)

4. Логирование сеанса

Для записи вывода из tmux в файл используйте встроенную команду:

Код: Выделить всё

tmux pipe-pane -o -t <номер_окна> 'cat > ~/session.log'
Чтобы остановить логирование:

Код: Выделить всё

tmux pipe-pane -t <номер_окна>
Можно также автоматизировать запись всех команд в отдельный лог (удобно при тестах или аудите).

5. Работа с буфером системы (Fedora / Wayland)

Чтобы копировать текст из tmux напрямую в системный буфер,
установите пакет xclip или wl-clipboard (в зависимости от окружения):

Код: Выделить всё

sudo dnf install xclip
И добавьте в конфигурацию tmux:

Код: Выделить всё

bind -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -selection clipboard -in"
Теперь при копировании клавишей y текст сразу попадает в системный буфер.

Заключение

tmux — инструмент, который раскрывается со временем.
Используя твой конфиг, автозапуск и приёмы из этой темы,
можно построить полноценное консольное рабочее окружение для Fedora:
— быстрый доступ по SSH,
— постоянные сессии,
— копирование и логирование,
— управление панелями без мыши.

Для администратора — это минимализм, стабильность и эффективность.
Последний раз редактировалось root 12 авг 2026 16:56, всего редактировалось 1 раз.
Ответить