Помнится у меня на блоге https://www.ekzorchik.ru есть заметка, когда я познакомился с утилитой tmux, после этого я пользовался ее постоянно и в целом был доволен. Сейчас у меня другая ситуация, моя рабочая система – это Ubuntu 18.04 и вследствие этого мне нужно подготовить для себя заметку по использованию дабы пользоваться только самыми последними наработками.

ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject

ekzorchik@srv-bionic:~$ sudo ./dproject/default

ekzorchik@srv-bionic:~$ rm -Rf dproject/

ekzorchik@srv-bionic:~$ sudo reboot

ekzorchik@srv-bionic:~$ uname -a && lsb_release -a

Linux srv-bionic 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 18.04.3 LTS

Release: 18.04

Codename: bionic

ekzorchik@srv-bionic:~$

ekzorchik@srv-bionic:~$ apt-cache show tmux | grep Version

Version: 2.6-3ubuntu0.2

Version: 2.6-3

ekzorchik@srv-bionic:~$ sudo apt-get install -y tmux

ekzorchik@srv-bionic:~$ tmux

Запущенная оболочка tmux в системе Ubuntu 18.04 Server

Чтобы разделить экран на два вертикальных:

Нажимаю сочетание клавиш Ctrl + B, а затем Shift + символ процента “%” и вот у меня уже две консоли:

Разделение оболочки tmux на два вертикальных окна

  • Выход из консоли exit или Ctrl + (Shift) b + x
  • Перемещение между консолями Ctrl + (Shift) b + <стрелочки: влево, вправо, вверх, вниз>

Чтобы разделить экран на два горизонтальных:

Нажимаю сочетание клавиш Ctrl + B, а затем Shift + символ двойной кавычки “” и вот у меня уже две консоли:

Разделение окна tmux из двух вертикальных одного на два горизонтальных

  • Выход из консоли exit или Ctrl + (Shift) b + x
  • Перемещение между консолями Ctrl + (Shift) b + <стрелочки: влево, вправо, вверх, вниз>

Общеупотребительные действия:

  • Ctrl + b + c → Создать новое окно и перейти в него:

Созданы несколько окон при работе с tmux

Т.е. на выше представленном скриншоте у меня три открытых окна.

  • чтобы переименовать окно: Ctrl + b + , — а после нажимаю клавишу Enter

Как переименовываются окна tmux

Результат переименованного окна:

Результат переименованного окна:

На заметку: Нумерация окон начинается с нуля («0»), а вновь создаваемые будут 1,2,3 и т.д

Чтобы переключаться между окнами используем нумерацию окон:

  • Ctrl + b + 1 → перейти к окну номер 1
  • Ctrl + b + 2 → перейти к окну номер 2

Текущее окно отмечено символом звездочки “*”:

Текущее окно отмечено символом звездочки “*”:

  • Ctrl + b + n → перейти к следующему окну по порядку
  • Ctrl + b + p → перейти к предыдущему окну
  • Ctrl + b + w → отобразить список окон и перейти на выбранное окно. Очень кстати наглядно, переходим стрелочками и видим что в каждом открыто:

Ctrl + b + w → отобразить список окон и перейти на выбранное окно.

  • Ctrl + b + s → выбрать сессию (Очень удобно)
  • Ctrl + b + t → отобразить текущее время, клавишей Esc закрыть показанное.
  • Ctrl + b + d → отключить сессию
ekzorchik@srv-bionic:~$ tmux

[detached (from session 0)]

ekzorchik@srv-bionic:~$

Отобразить список сессий:

ekzorchik@srv-bionic:~$ tmux list-sessions

0: 3 windows (created Fri Nov 1 13:13:00 2019) [162x36]

ekzorchik@srv-bionic:~$

или так

ekzorchik@srv-bionic:~$ tmux ls

0: 3 windows (created Fri Nov 1 13:13:00 2019) [162x36]

ekzorchik@srv-bionic:~$

Подключиться обратно к отключенной сессии:

ekzorchik@srv-bionic:~$ tmux attach -t 0

или так:

ekzorchik@srv-bionic:~$ tmux attach-session -t 0

Убить отключенную сессию:

ekzorchik@srv-bionic:~$ tmux kill-session -t 0

Что еще примечательно так это возможность добавления настроек в пользовательском каталоге конфигурационного файла: (по умолчанию его нет, создаем)

ekzorchik@srv-bionic:~$ nano ~/.tmux.conf

#Все что начинается с символа решетки «#» есть комментарий и выполняется не будет.

#изменить префикс запуска команд с Ctrl + b на Ctrl +a

set-option -g prefix C-a

# отключить префикс Ctrl + b

unbind-key C-b

#использование префиксов в удаленной сессии

bind-key C-a send-prefix

#изменить нумерацию не с нуля, а с единицы, хотя мне и с нуля удобнее.

set -g base-index 1

#отключить Escape последовательности

set-option -sg escape-time 0

#обновить ~/.tmux.conf

unbind r

bind r source-file ~/.tmux.conf

Чтобы создать сессию где будут запущены группы приложений одной задачи:

ekzorchik@srv-bionic:~$ tmux new-session -s example

На заметку: команды по управлению сессиями

  • $ tmux list-session
  • $ tmux new-session <имя-сессии>
  • $ tmux attach-session -t <имя-сессии>
  • $ tmux rename-session -t <имя-сессии>
  • $ tmux choose-session -t <имя-сессии>
  • $ tmux kill-session -t <имя-сессии>

Создание сессии с именем окна htop, имя сессии one и после запуск утилиту htop:

ekzorchik@srv-bionic:~$ tmux new-session -n htop -s one 'htop'

На заметку: чтобы изменения в tmux применились нужно завершить полностью сессию и запустить заново.

Чтобы предопределить лимит(буфер) вводимых команд:

ekzorchik@srv-bionic:~$ set -g history-limit 999999

Отобразить список ключей:

ekzorchik@srv-bionic:~$ tmux list-keys

Отобразить список команд:

ekzorchik@srv-bionic:~$ tmux list-commands

Отобразить информацию по каждой сессии:

ekzorchik@srv-bionic:~$ tmux info

Перечитать конфигурационный файл tmux (~/.tmux.conf)

ekzorchik@srv-bionic:~$ tmux source-file ~/.tmux.conf

Чтобы отправить команду в отключенный сеанс (если не указать слово Enter то команда будет просто набрана, но не запущена)

ekzorchik@srv-bionic:~$ tmux send -t 5 htop ENTER

после подключившись к ней вижу запущенную утилиту htop

ekzorchik@srv-bionic:~$ tmux attach-session -t 5

Подключившись к сессии, вижу отправленную ранее команду

Чтобы записывать все происходящее в консоли:

ekzorchik@srv-bionic:~$ nano ~/.tmux.conf

bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log'

bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log'

ekzorchik@srv-bionic:~$ tmux source-file ~/.tmux.conf

ekzorchik@srv-bionic:~$ tmux attach-session -t example

и нажимаю Ctrl + b + H и включается запись в лог, а если Ctrl + b + h для выключения записи в лог.

Чтобы назначить собственные действия командам в ~/.tmux.conf

bind-key -n F1 select-window -t 1

-n F1 → задаем клавишу

select-window -t 1 → выполняемое действие

Пример запуска с заранее предопределенными окнами программ:

ekzorchik@srv-bionic:~$ nano window

#!/bin/bash

# запускаю сервер tmux

tmux start-server

# создаю сессию: -n имя окна, -s имя сессии, и запускаю приложение

tmux new-session -n htop -s one 'htop'

# создаю окно под номером 2 в сесии one с именем vim и запускаю приложение

tmux new-window -n vim -t one:2 'vim'

# выбираю первое окно

tmux select-window -t one:1

# присоединяюсь к активному терминалу с сессией one и запущенным приложением htop

tmux attach -t one

ekzorchik@srv-bionic:~$ chmod +x window

ekzorchik@srv-bionic:~$ ./window

Предопределённый запуск настроек терминала с окнами

Настройка автозапуска Tmux при загрузке сервера, точнее подключение:

ekzorchik@srv-bionic:~$ nano ~/.bashrc

if [ ! "$TMUX" ]; then

tmux attach

fi

if [ "$TMUX" ]; then

export TERM=screen

fi

После не забываем сохранить внесенные изменения. Тем самым внесенные изменения обозначают, что если мы не в tmux, то подключаемся к нему.

ekzorchik@srv-bionic:~$ sudo reboot

root@srv-vpn:~# ssh -l ekzorchik 172.33.33.62

ekzorchik@172.33.33.62's password:

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)

* Documentation: https://help.ubuntu.com

* Management: https://landscape.canonical.com

* Support: https://ubuntu.com/advantage

Last login: Fri Nov 1 12:40:11 2019 from 10.8.0.1

no sessions -> все правильно у меня не было открытых сессий которые я оставил когда отправил сервер в перезагрузку.

ekzorchik@srv-bionic:~$

А если бы я и оставил их то они завершаются при отправке сервера в перезагрузку.

Закрыл сессию подключаюсь к ней заново и вот тогда попадаю в запущенный tmux. Вот так вот правильнее.

Итого я получил инструмент, заслуживающий того, чтобы его использовать в повседневности. По мере моих наработок и вычитки различных источников данная заметка будет наполняться. Добавить здесь нечего нужно использовать, а пока я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.