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

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


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
  • The Tao of tmux by Tony Narlock:
    • tao-of-tmux.readthedocs.io/en/latest
    • leanpub.com/the-tao-of-tmux/read

Управление

Управление осуществляется через модификатор. По-умолчанию это: 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отключение

Choosing sessions, windows and panes

There are two key bindings to enter tree mode:

  • Ctrl+b s starts showing only sessions and with the attached session selected;
  • Ctrl+b w starts with sessions expanded so windows are shown and with the current window in the attached session selected.

This is a list of the keys available in tree mode without pressing the prefix key:

Key Function
Enter Change the attached session, current window or active pane
Up Select previous item
Down Select next item
Right Expand item
Left Collapse item
x Kill selected item
X Kill tagged items
< Scroll preview left
> Scroll preview right
Ctrl+s Search by name
n Repeat last search
t Toggle if item is tagged
T Tag no items
Ctrl+t Tag all items
: Prompt for a command to run for the selected item or each tagged item
O Change sort field
r Reverse sort order
v Toggle preview
q Exit tree mode

Tree mode is activated with the choose-tree command.

Detaching other clients

:!: Принудительный разрыв соединений других клиентов:
Ctrl+b Shift+d → стрелками выбрать →Enter.

A list of clients is available by pressing C-b D (that is, C-b S-d).

This is a list of the keys in client mode without the movement and tagging keys that are the same as tree mode:

Key Function
Enter Detach selected client
d Detach selected client, same as Enter
D Detach tagged clients
x Detach selected client and try to kill the shell it was started from
X Detach tagged clients and try to kill the shells they were started from

Other than using client mode, the detach-client command has a -a flag to detach all clients other than the attached client.

Другое

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.

Расшифровка условий

  • [ -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):

if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [ $- =~ i ]; then
    tmux attach-session -t ssh || tmux new-session -s ssh
    exit
fi

Необходимо проверять $SSH_TTY вместо $SSH_CONNECTION, что бы работал SFTP.

Автозапуск на Desktop

При любом входе:

if [ -z "$TMUX" ] && [ "$EUID" -ne 0 ] && [ $- =~ i ]; then
    tmux attach-session -t default || tmux new-session -s default
    exit
fi

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

################################################################################
#tmux on start
P_NAME="$(ps -o comm= $PPID)"; # Название проги, запустившей терминал: $P_NAME
 
if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then # SSH
	TMUX_SESSION="ssh $P_NAME"
	tmux attach-session -t $TMUX_SESSION || tmux new-session -s $TMUX_SESSION && 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" && exit
fi
[[ -n "$TMUX" ]] && tmux ls # Вывод списка сессий
################################################################################

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

~/.tmux.conf

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

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

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

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

.tmux.conf
# Automatically set window title
set-window-option -g automatic-rename on
set-option -g set-titles on
 
## 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
 
# 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
 
# Мышь
# До версии 2.1
#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
#
setw -g monitor-activity on
 
# Reload tmux config
bind r source-file ~/.tmux.conf
 
#
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-option -g default-command bash
 
#
set -g display-time 1500 # Время в миллисекундах, сколько будут отображаться сообщения (в статусбаре к примеру)
 
# THEME
 
# 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.
 
# Настройки стутусбара
#set -g status-utf8 on
set -g status on
set -g status-interval 30
set -g status-position bottom # Позиция стутусбара
 
# Цвета статусбара
set -g status-fg white
set -g status-bg default
 
#
set -g status-left-length 40 # max-size
set -g status-left-fg yellow
set -g status-left-bg default
#set -g status-left '(#S) #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H '
#set -g status-left '(#S)#[fg=white]:#[fg=red]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[default]┇'
set -g status-left '#[bg=yellow,fg=black]#S#[fg=red,bg=white]#(tmux ls|wc -l)#[default] #[fg=green]#(whoami)#[fg=yellow]@#[fg=green]#H#[default]┇'
#
set -g status-right-length 30 # max-size
set -g status-right-fg green
set -g status-right-bg default
# set -g status-right ' #(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=yellow]%H:%M#[default] '
set -g status-right '#[fg=yellow]┇#[default]#(cut -d " " -f 1-3 /proc/loadavg)#[default]#[fg=black,bg=white,dim]%H:%M#[default]'
 
# Цвета активных окон
set-window-option -g window-status-current-fg black
set-window-option -g window-status-current-bg brightyellow
set-window-option -g window-status-current-attr bright
 
# Цвета заголовков окон - ГЛЮЧИТ
set-window-option -g window-status-fg blue
set-window-option -g window-status-bg white
set-window-option -g window-status-attr dim
 
# Цвета командной строки
set -g message-fg default
set -g message-bg default
set -g message-attr bright
#
subjects/administration/tmux.1683210959.txt.gz · Последние изменения: 2023/05/04 17:35 —

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

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

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

Телефоны:

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

Skype: eduVdom.com

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