Помнится у меня на блоге 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
Чтобы разделить экран на два вертикальных:
Нажимаю сочетание клавиш Ctrl + B
, а затем Shift +
символ процента “%
” и вот у меня уже две консоли:
- Выход из консоли
exit
илиCtrl + (Shift) b + x
- Перемещение между консолями
Ctrl + (Shift) b + <стрелочки: влево, вправо, вверх, вниз>
Чтобы разделить экран на два горизонтальных:
Нажимаю сочетание клавиш Ctrl + B
, а затем Shift +
символ двойной кавычки “”
” и вот у меня уже две консоли:
- Выход из консоли
exit
илиCtrl + (Shift) b + x
- Перемещение между консолями
Ctrl + (Shift) b + <стрелочки: влево, вправо, вверх, вниз>
Общеупотребительные действия:
Ctrl + b + c
→ Создать новое окно и перейти в него:
Т.е. на выше представленном скриншоте у меня три открытых окна.
- чтобы переименовать окно:
Ctrl + b +
, — а после нажимаю клавишуEnter
Результат переименованного окна:
На заметку: Нумерация окон начинается с нуля («0
»), а вновь создаваемые будут 1,2,3
и т.д
Чтобы переключаться между окнами используем нумерацию окон:
Ctrl + b + 1
→ перейти к окну номер 1Ctrl + b + 2
→ перейти к окну номер 2
Текущее окно отмечено символом звездочки “*
”:
Ctrl + b + n
→ перейти к следующему окну по порядкуCtrl + b + p
→ перейти к предыдущему окну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.