Инструменты пользователя

Инструменты сайта


Action disabled: source
subjects:administration:tmux

tmux

tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Аналог screen.

Полезно
  • github.com/tmux/tmux/wiki/Getting-Started
  • tmuxguide.readthedocs.io/en/latest/tmux/tmux.html
  • habr.com/post/516488
  • github.com/samoshkin/tmux-config
  • github.com/aleclearmind/nested-tmux
  • stackoverflow.com/questions/35016458/how-to-write-if-statement-in-tmux-conf-to-set-different-options-for-different-t
  • stahlke.org/dan/tmux-nested
  • The Tao of tmux by Tony Narlock:
    • tao-of-tmux.readthedocs.io/en/latest
    • leanpub.com/the-tao-of-tmux/read
    • tmuxp.git-pull.com/about_tmux.html

Управление

Управление осуществляется через модификатор. По-умолчанию это: Ctrl+b, много где пишут сокращённо: C-b. Нажимается модификатор, а потом нужная комбинация.

Панели

Ctrl+b %Вертикальное разбиение
Ctrl+b "Горизонтальное разбиение
Ctrl+b Space4 предустановки (по очереди)
Ctrl+b стрелкаперейти на панель, находящуюся в стороне, куда указывает стрелка
Ctrl+b Ctrl+стрелкаизменить размер текущей панели
Ctrl+b oперейти на следующую панель
Ctrl+b ;переключаться между текущей и предыдущей панелью
Ctrl+b xзакрыть текущую панель

Окна

Ctrl+b cНовое окно
Ctrl+b 0…9Перейти в окно
Ctrl+b wПосмотреть окна
Ctrl+b ,переименовать текущее окно

Сессии

Ctrl+b sсписок рабочих сессий
Ctrl+b dотключится от текущей сессии
Ctrl+dотключение

Закрыть

  1. Войти в режим выбора: Ctrl+b w или Ctrl+b s.
  2. Выбрать стрелочками.
  3. Запросить принудительное закрытие: Ctrl+b Ctrl+x.
  4. Согласиться.

☛ [EN] sessions, windows, panes and Detaching

Другое

Ctrl+b tчасы
Ctrl+b ?Справка по горячим клавишам

Режим копирования

Ctrl+b [войти в режим копирования
space – выделение; Enter – копирование
Ctrl+b ]вставить из внутреннего буфера обмена tmux

Режим копирования

Если вы хотите иметь возможность скопировать в системный буфер обмена, перед тем как выполнять действия мышкой зажмите Shift.

Кроме того, в tmux есть управление копированием и вставкой с помощью клавиш.

  • Ctrl+b [ либо Ctrl+b PageUp — для перехода в режим копирования.
  • space — для начала выделения. Где-то написано: Ctrl+пробел
  • Enter — для копирования. Где-то написано: Ctrl+w
  • PageUp / PageDownдля прокрутки.
  • q или Escдля выхода из режима копирования.
  • Ctrl+b ] — вставить текст из внутреннего буфера обмена.

Команды

Команды tmux для управления сессиями, которые вы можете использовать:

  • attach-session (attach) – подключиться к уже существующей сессии. В параметре необходимо передать опцию -t и идентификатор сессии;
  • detach-session (detach) – отключить всех клиентов (или переданного с помощью опции -t) от сессии, переданной в опции -s;
  • has-session – проверить существует ли сессия, аналогично, надо передать идентификатор сессии;
  • kill-server – остановить все запущенные сессии;
  • kill-session – завершить сессию переданную в параметре -t;
  • list-clients – посмотреть клиентов, подключенных к сессии -t;
  • list-sessions (ls) – вывести список всех запущенных сессий;
  • new-session – создать новую сессию, можно передать имя сессии в опции -s и стартовую директорию в опции -c;
  • rename-session – переименовать сессию, нужно передать идентификатор сессии и новое имя;
  • tmux ls – Посмотреть список сессий.
  • tmux at – Подключиться к существующей сессии.
  • tmux list-keys – Список горячих клавиш.

Запуск

tmux attach || tmux new

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

Автозапуск

Чтобы автоматически запускать tmux, отредактируйте ~./bashrc.

Автозапуск на Linux (универсальный)

################################################################################
#tmux on start
P_NAME="$(ps -o comm= $PPID)"; # Название проги, запустившей терминал: $P_NAME
 
if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then # SSH
	TMUX_SESSION="$P_NAME"
	tmux attach-session -t "$TMUX_SESSION" || tmux new-session -s "$TMUX_SESSION" || tmux || vim && exit
elif [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ "$EUID" -ne 0 ]]; then # not root
	TMUX_SESSION="$P_NAME"
	#tmux at || tmux && exit
	tmux attach-session -t "$TMUX_SESSION" || tmux new-session -s "$TMUX_SESSION" || tmux || vim && exit
fi
[[ -n "$TMUX" ]] && tmux ls # Вывод списка сессий
################################################################################
Расшифровка условий
  • [ -z «$TMUX» ] — если сессия tmux
  • [ -n «$SSH_TTY» ] — если SSH
  • [ «$EUID» -ne 0 ] — если не root.
  • [ $- =~ i ] – test for interactive terminal to allow tools like Ansible to work.

Для запуска tmux на удаленном сервере при входе в систему через SSH (и только SSH): Необходимо проверять $SSH_TTY вместо $SSH_CONNECTION, что бы работал SFTP.

Конфигурация

~/.tmux.conf

Немного о статус баре tmux

Статус бар в tmux делится на две части: левую, и правую. В каждую из частей можно вывести желаемую информацию. Формат довольно простой. Используются специальные символы:

  • #(shell-command) - Любая внешняя команда
  • #[attributes] - Изменение цвета, или атрибута статус бара
  • #H - Имя хоста локального компьютера
  • #F - Текущий флаг окна
  • #I - номер текущего (активного) окна
  • #P - Список всех фреймов
  • #S - Имя сессии
  • #T - Заголовок текущего окна
  • #W - Имя текущего окна
  • ## - Символ решётка - ‘#’

Пример конфигурации

Нюанс конфигурации — префих по-умолчанию стандартный: C-b (Ctrl+b), но если определяется, что работа идёт через SSH ($SSH_CLIENT), то префикс меняется на C-a (Ctrl+a), также меняется цвет статусбара и справа проступает надпись C-a.

Проверено на tmux 1.8 и tmux 2.1 .

.tmux.conf
###############################################################################
## (Re) Bind keys
# Reload tmux config
bind r source-file ~/.tmux.conf
###############################################################################
 
###############################################################################
# Automatically set window title
set-window-option -g automatic-rename on
set-option -g set-titles on
#
set-option -g allow-rename off # prevent window-status-format show very long path
set-option -g automatic-rename on
set-window-option -g automatic-rename on # rename window to reflect current program
###############################################################################
## set the default TERM
#set -g default-terminal "xterm"
#set -g default-terminal screen-256color
set -g default-terminal xterm
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
set -g history-limit 10000
#
#~ set-option -g default-command bash
set-option -g default-command bash
#
set -g display-time 1500 # Время в миллисекундах, сколько будут отображаться сообщения (в статусбаре к примеру)
#
setw -g monitor-activity on
###############################################################################
# If either of the VISUAL or EDITOR environment variables are set to something containing vi (such as vi, vim, nvi) when the tmux server is first started, both of these options are set to vi.
set -g status-keys vi
set -g mode-keys vi
setw -g mode-keys vi
###############################################################################
## Мышь
## tmux 1.8
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on
#set -g mode-mouse on
## С версии 2.1
#setw -g mouse on
set -g mouse on
###############################################################################
 
###############################################################################
## THEME - help
###############################################################################
# https://github.com/jimeh/tmux-themepack
###############################################################################
## The colors available to tmux are:
# * black, red, green, yellow, blue, magenta, cyan, white.
# * bright colors, such as brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan.
# * colour0 through colour255 from the 256-color set.
# * default
# * hexadecimal RGB code like #000000, #FFFFFF, similar to HTML colors.
#
# You can use [bg=color] and [fg=color] to adjust the text color and background within for status line text. This works on status-left and status-right.
# Мои примечания:	Для лучшей совместимости рекомендую использовать только основные 7 цветов, причём светлым по тёмному (желательно чёрному).
# Для поддержки прозрачности термиинала, необходимо использовать bg=default
###############################################################################
## Задание опций
# Глобальное:
# set -g [имя] [значение]
# Для окна - следующие две строчки равнозначны:
# set-window-option -g window-* [зачение]
# set -gw window-* [зачение]
# Разобраться: помимо опций "g" и "w" есть "o" (кэширование?), "q" (значение?), "F" (распарсить q?) примеры: -goq; -gqF; -goqF; -gwF;
# set, setw, set-option, set-window-option
###############################################################################
## Перечень основных элементов:
#g display-panes-active-colour	display-panes-colour
#g message-command-style	message-style
#set -g status-utf8 on # tmux 1.8
#g status [on/off]	status-interval [int]	status-position	[top/bottom]	status-justify [centre]	status-style
#g status-left	status-left-length [int]	status-left-style
#g status-right	status-right-length [int]	status-right-style
#gw clock-mode-colour	clock-mode-style [24]
#gw mode-style
#gw pane-active-border-style	pane-border-style
#gw ?? window-status-activity-style	window-status-style
#gw window-status-current-style	window-status-current-format ["#I:#W#F"]	window-status-format ["#I:#W#F"]	window-status-separator
## Примечания:
# Простые значения "-g" пишутся одним словом без ковычек.
# У всего, что заканчивается на "*-style" и не только есть возможность его расписать цвета как 3 компонента: "*-fg"; "*-bg"; "*-attr" (dim, bright). Ну или как строку: "fg=[color], bg=[color], [attr]". При этом, опции "*-style" нет в tmux 1.8.
# "*-length" означает не строго длину, а максимальную длину, int.
###############################################################################
## Пред-установленные значения, внутри кавычек, перед символ #
# status
# "#S"	"#I"	"#P"	"#H"	"%H:%M:%S"	"%d-%b-%y"
# window-status
# "#I:#W#F"	"#I:#W#F"
# Вызов значения из bash:
# '#(cut -d " " -f 1-3 /proc/loadavg)'	'#(tmux ls|wc -l)'
###############################################################################
 
###############################################################################
# THEME
###############################################################################
## Предустановки:
 
# Настройки стутусбара
#set -g status-utf8 on # tmux 1.8
set -g status on
set -g status-interval 3 # sec
set -g status-position bottom
set -g status-justify centre
set -g status-bg default # tmux 1.8-2.1
 
#~ set -g status-left "#[bg=yellow,fg=black]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[default]┇#I:#P┇"
#~ set -g status-left "#[fg=yellow,bg=default]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[fg=white]┇#I:#P┇#[default]"
set -g status-left "#[fg=yellow,bg=default]#S#[fg=black,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[fg=white]┇#I:#P┇#[default]"
set -g status-left-length 40 # max-size
set -g status-left-bg black
 
#~ set -g status-right "#[default]┇#[fg=yellow]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=black,bg=white,dim]%H:%M#[default]"
#~ set -g status-right "#[fg=white]┇#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=yellow,bg=default]%H:%M#[default]"
set -g status-right "#[fg=white]┇#[fg=default]C-a┇#[fg=green]#(cut -d ' ' -f 1-3 /proc/loadavg)#[default] #[fg=yellow,bg=black]%H:%M#[default]"
set -g status-right-length 40 # max-size
set -g status-right-bg black
 
set -gw window-status-activity-fg black # tmux 1.8-2.1
set -gw window-status-activity-bg white # tmux 1.8-2.1
set -gw window-status-fg green # tmux 1.8-2.1
set -gw window-status-bg white # tmux 1.8-2.1
set -gw window-status-current-fg white # tmux 1.8-2.1
set -gw window-status-current-bg green # tmux 1.8-2.1
set -gw window-status-current-attr bright # tmux 1.8-2.1
set -gw window-status-separator "┇"
###############################################################################
## local and remote sessions
# if-shell "shell_command" "true" "false"
if-shell "test -n '$SSH_CLIENT'" \
	"set -g status-bg blue; set -g status-left-bg blue; set -g status-left-attr bright; set -g status-right-bg white; set -g status-right-fg brightred; set -g status-right-attr dim; unbind C-b; set -g prefix C-a; bind C-a send-prefix;" # Ctrl+a for Remote session, Ctrl+b (default) for local
###############################################################################
subjects/administration/tmux.txt · Последние изменения: 2023/05/09 15:36 —

На главную страницу Обучение Wikipedia Тестирование Контакты Нашли ошибку? Справка

Записаться на занятия

Ошибка Записаться на занятия к репетитору

Телефоны:

  • +7 (910) 874 73 73
  • +7 (905) 194 91 19
  • +7 (831) 247 47 55

Skype: eduVdom.com

закрыть[X]
Наши контакты