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

Установка, настройка, эксплуатация.

Модератор: ROOT

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

Сообщение ROOT » 03 авг 2017, 15:49

Оглавление
Темы
 TMUX — терминальный мультиплексор в Fedora 
 Пример конфигурационного файла .tmux.conf 
 Автоматический запуск tmux при входе в систему 
 Некоторые клавиши данной конфигурации 
 Полезные приёмы и управление в tmux 


 TMUX — терминальный мультиплексор в Fedora 
Введение
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` и освоить основные комбинации клавиш.
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 2202 2083 5115 2302


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 460
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 18:03



Продолжение темы: пользовательская конфигурация tmux (адаптировано под Fedora 40+)


 Пример конфигурационного файла .tmux.conf 
Ниже приведён адаптированный вариант рабочей конфигурации 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. Обновлён синтаксис
    Код: выделить все
    setw
    и
    Код: выделить все
    set
    (вместо старых)
    Код: выделить все
    set-window-option
  5. Конфигурация полностью совместима с tmux 3.3a и 3.4.


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



Продолжение темы: автоматический запуск и организация 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 — для полноценного постоянного окружения администратора.
Оба способа совместимы и могут использоваться одновременно:
функция — для быстрого входа, скрипт — для сборки рабочей среды.
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 2202 2083 5115 2302


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 460
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 18:04



 Некоторые клавиши данной конфигурации 
"`"главный префикс - клавиша или сочетание с префикс начинаются команды tmux (далее команды приведены без него)
`Последнее окно
Rперечитать конфигурационный файл,
MРедактирование конфигурационного файла
Hразделить окно по горизонтали
Vразделить окно по вертикали
aнабрать символ "`"
XУбить панель или Ctrl+d
KСпрашивает закрывать или нет панель
Nпереход по окнам
Pпереход по окнам
LОчистить историю
Alt + стрелкипереключения между панелями
Shift + стрелкипереключения между окнами
FПоменять панели местами
DПоменять панели местами
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 2202 2083 5115 2302


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 460
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

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

Сообщение ROOT » 18 окт 2025, 13:29



Продолжение темы: практическая работа в tmux



 Полезные приёмы и управление в 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,
— постоянные сессии,
— копирование и логирование,
— управление панелями без мыши.

Для администратора — это минимализм, стабильность и эффективность.
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 2202 2083 5115 2302


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 460
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный


Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron