Сегодня речь пойдет о консоли, о терминальном мультиплексоре (Имя утилиты: tmux) посредством которого можно в рамках одного экрана работать со множеством терминалов. Это удобно, приходишь на работу, запускаешь скрипт и запускается терминал с разделенным окнами где в каждом отображается: текущая ситуация по нагрузке, почтовая очередь, статус выполнения бекапа и все многое другое до чего дотянутся Ваши задачи. Может сперва и не понятно, что есть мультиплексор, но стоит себя заставить поставить его и поработать некоторое время. А лучше поставить цель — научиться использовать. Также важным из собственных наблюдений считаю возможность отключаться от текущей сессии и подключаться заново. Чем это может помочь? К примеру я подключен к своему хостингу, анализирую выполнение бекапа и см. логи, отключился, а после снова подключился и продолжаю как не в чем не бывало, терминал просто как бы свернулся, но пока работает сервер работает и tmux.
Произвожу установку на рабочую систему Ubuntu Trusty Desktop/Server:
ekzorchik@srv-trusty:~$ sudo rm -Rf /var/lib/apt/lists/
ekzorchik@srv-trusty:~$ sudo apt-get update && sudo apt-get upgrade -y
ekzorchik@srv-trusty:~$ apt-cache search tmux
tmux - terminal multiplexer
Устанавливаю пакет tmux из стандартных репозитариев:
ekzorchik@srv-trusty:~$ sudo apt-get install tmux -y
ekzorchik@srv-trusty:~$ tmux
На заметку: управление терминалом tmux осуществляется через первоначальное сочетание клавиш (Ctrl + b
) и комбинация.
Примеры с которыми знакомился я при изучении:
Ctrl + b + (Shift) + %
– разделить окно на два вертикальных окна, если окно стало не нужны то набираем exit и окно(консоль) закрывается или Ctrl + b + x
Ctrl + b + (Shift) +"
→ разделить окно на два горизонтальный окна
Ctrl + b + o
→ для переключения между окнами, либо Ctrl + b +
стрелки (влево, вправо, вперед, назад)
Нажать и держать Ctrl + b
и нажимать стрелки влево («<-»)
и вправо («->»)
→ этим действием я делаю ресайз окна по размеру.
Пример разделения консоли на окна:
Ctrl + b + c
→ Создать новое окно и перейти в него:
при первом запуске приложения, данное окно будет названо в его честь:
чтобы его переименовать: Ctrl + b + ,
чтобы выйти и окна: Ctrl + b + &
окна нумеруются с нуля, соответственно, новое окно будет отмечено цифрой 1.
Ctrl + b + 1 → перейти к окну номер 1
Ctrl + b + 2 → перейти к окну номер 2
Ctrl + b + n → перейти к следующему окну по порядку
Ctrl + b + p → перейти к предыдущему окну
Ctrl + b + w → отобразить список окон и перейти на выбранное окно.
Ctrl + b + s → выбрать сессию (Очень удобно)
Ctrl + b + t → отобразить текущее время, клавишей Esc закрыть показанное.
Ctrl + b + d
→ отключить сессию
Отобразить список сессий:
ekzorchik@srv-trusty:~$ tmux list-sessions
или так:
ekzorchik@srv-trusty:~$ tmux ls
0: 3 windows (created Thu Oct 26 12:55:18 2017) [90x24]
Подключиться обратно к отключенной сессии:
ekzorchik@srv-trusty:~$ tmux attach -t 0
или так:
ekzorchik@srv-trusty:~$ tmux attach-session -t 0
Убить отключенную сессию:
ekzorchik@srv-trusty:~$ tmux kill-session -t 0
Что еще примечательно так это возможность добавления настроек в пользовательском каталоге конфигурационного файла:
ekzorchik@srv-trusty:~$ 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
# enable mouse
setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on
Чтобы создать сессию где будут запущены группы приложений одной задачи:
ekzorchik@srv-trusty:~$ 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-trusty:~$ tmux new-session -n htop -s one 'htop'
На заметку: чтобы изменения в tmux применились нужно завершить полностью сессию и запустить заново.
Чтобы предопределить лимит(буфер) вводимых команд:
ekzorchik@srv-trusty:~$ set -g history-limit 999999
Отобразить список ключей:
ekzorchik@srv-trusty:~$ tmux list-keys
Отобразить список команд:
ekzorchik@srv-trusty:~$ tmux list-commands
Отобразить информацию по каждой сессии:
ekzorchik@srv-trusty:~$ tmux info
Перечитать конфигурационный файл tmux (~/.tmux.conf)
ekzorchik@srv-trusty:~$ tmux source-file ~/.tmux.conf
Чтобы отправить команду в отключенный сеанс (если не указать слово Enter то команда будет просто набрана, но не запущена)
ekzorchik@srv-trusty:~$ tmux send -t 5 htop ENTER
после подключившись к ней вижу запущенную утилиту htop
ekzorchik@srv-trusty:~$ tmux attach-session -t 5
Чтобы записывать все происходящее в консоли:
ekzorchik@srv-trusty:~$ 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-trusty:~$ tmux source-file ~/.tmux.conf
ekzorchik@srv-trusty:~$ 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-trusty:~$ 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-trusty:~$ chmod +x window
ekzorchik@srv-trusty:~$ ./window
Итого я получил инструмент заслуживающий того, чтобы его использовать в повседневности. По мере моих наработок и вычитки различных источников данная заметка будет наполняться. Добавить здесь нечего нужно использовать, а пока я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.