MyTetra Share
Делитесь знаниями!
Мультиплексирующий терминал Tmux
Время создания: 12.11.2013 00:18
Текстовые метки: linux, tmux, терминал, консоль
Раздел: Компьютер - Linux - Bash - Терминал
Запись: xintrea/mytetra_syncro/master/base/1384201083dhgz1id4ek/text.html на raw.github.com

TMUX - terminal multiplexing


Самое большое удобство программы tmux в том, что можно на сервере, запустить настроенный tmux, отсоединиться от сервера, и через пару месяцев присоединиться, а tmux-будет работать и всё окружение тоже и вся информация тоже. Но надо постараться настроить и сохранить в скрипт запуска.


TMux практически, аналог приборных панелей, т.н. dashboards. Отображаемая информация зависит от используемых консольных программ.


После настройки, пользователю останется только не забыть способ навигации внутри tmux.


Более того, tmux можно использовать вместо командной оболочки при заходе на сервер. Сразу настроенная среда.


Внутри tmux, можно использовать вместо обычного bash, любую другую оболочку, либо интерпретаторы языков высокого уровня.



Как работать с TMUX


Коннектимся через терминал к удаленной системе. Запускаем TMUX командой:


$ tmux


Работаем в нем. Если сессия с терминалом разорвалась, то не расстраиваемся. Соединяемся снова, набираем:


$ tmux attach


И видим весь наш терминал в том виде, который мы его видели перед разрывом. Продолжаем работать.



Краткий обзор TMUX


  • Общесистемный конфигурационный файл: /etc/tmux.conf
  • Пользовательский конфигурационный файл: ~/.tmux.conf
  • Произвольный конфигурационный файл, задается опцией -f, при запуске tmux.
  • Руководство (en): man tmux
  • Запуск: tmux [команда]
  • Установка в Ubuntu server: $ sudo apt-get install tmux
  • Префикс по умолчанию, для управления с клавиатуры: ctrl-b


Поддерживаются несколько буферов обмена, мышь.



Сессии tmux


Сессий может быть много. Имена и логическое назначение выбирает пользователь.


Например, сессии - общий мониторинг микросервера (microserver), общий мониторинг сети (network), мониторинг и управление сервисами (services), управление удаленными вебсерверами (webservers), баз данных (database).


В принципе, для любого системного сервиса можно использовать сессию, либо окно внутри сессии.



Система адресации в Tmux


сессия - [имя сессии]

окно - [сессия]:[имя окна]

панель - [сессия]:[окно].[номер панели]


Примеры:


сессия - microserver

окна - microserver:control microserver:logfiles

панели - microserver-control.0 microserver.logfiles.2



Команды tmux


$ tmux new-session -n [имя окна] -s [имя сессии]


сессия создаётся с окном по умолчанию, для задания имени такого окна используется опция -n. Опция -s задает имя сессии. Опция -d - запуск сессии в фоне (daemon-режим).


$ tmux new-window -n [имя окна] -t [имя сессии] [скрипт]


создается новое окно внутри сессии, например:


$ tmux new-window -a -n logfiles -t microserver


(просто окно, без команды)


опция -a указывает окно делается с индексом следующим за текущим в данной сессии, [скрипт] - командный файл, который будет выполнен во вновь созданном окне.


$ tmux new-window -a -n logfiles -t microserver "top"


(выполниться команда top во вновь созданном окне)


По умолчанию выполняется приглашение оболочки. Если выполнить [скрипт], то окно закроется, чтобы не закрывалась (нужно иногда), надо установить опцию: remain-on-exit = on в конфигурационном файле.


Если не планируется закрывать такое окно, то можно использовать и такую форму запуска.


И другой путь - запускать в окнах стандартную оболочку (фунция по-умолчанию), и исполнять команды в ней, тогда окна не закрываются, пока не набрать exit.


Пример:


# tmux send-keys -t network:real.2 "slurm -i home.8" C-m


в сессию network, окно real, панель №2, набрать "slurm -i home.8" и нажать ввод "C-m"



Рабочее окружение на основе TMUX


Пример командного файла формирования рабочего окружения, на базе tmux. Запускается под обычным пользователем.


#!/bin/bash

# сервер: microserver, микросервер, n40l

# 30.10.2012


# Сессии

# microserver - общая сессия, для разнообразных работ на сервере

# services - сессия наблюдения за сервисами микросервера

# network - сессия наблюдения за домашней сетью


tmux new-session -d -n control -s microserver

tmux new-session -d -n s-view -s services

tmux new-session -d -n n-view -s network


# В каждой сессии создается свой набор окон, помимо первых окон.

# окна logfiles предназначены для просмотра логфайлов

tmux new-window -a -n logfiles -t microserver

tmux new-window -a -n logfiles -t services

tmux new-window -a -n logfiles -t network


# Делим первое окно (control) в сессии microserver

# По горизонтали на 2 панели, правую панель по вертикали на 2

tmux split-window -dv -p 50 -t microserver:control.0

tmux split-window -dh -p 50 -t microserver:control.1


# Делаем небольшоое окошко командной строки

tmux split-window -dv -p 10 -t microserver:control.2


# Делим второе окно (logfiles) в сессии microserver

# 4 панели - четверти экрана

# Вначале, делим текущее окно пополам, потом появившуюся панель

# с номером 1 пополам, а затем остаток от панели 0 пополам.

tmux split-window -dh -p 50 -t microserver:logfiles.0

tmux split-window -dv -p 50 -t microserver:logfiles.1

tmux split-window -dv -p 50 -t microserver:logfiles.0


# Делаем небольшоое окошко командной строки

tmux split-window -dv -p 10 -t microserver:control.2


# Выбираем окно по умолчанию, в сессии microserver

tmux select-window -t microserver:control



Базовая система навигации TMux


Здесь перечислены основные клавиатурные команды.


  • Префикс по умолчанию, для управления с клавиатуры: ctrl-b, его можно перенастроить в конфигурационном файле (переназначить).
  • Отсоединение от терминала tmux: ctrl-b d
  • Присоединение к терминальной сессии: tmux attach-session -t microserver
  • Переключение между окнами сессии, по номеру: ctrl-b 0, ctrl-b 1
  • Перемещение между панелями: ctrl-b и стрелки курсора
  • Показать индексы панелей: ctrl-b q
  • Также можно выбрать панель по индексу: ctrl-b q 1
  • Можно изменять размеры панелей: нажимаете ctrl-b, затем отпускаете b, но держите ctrl и стрелками курсора двигаете.
  • Закрыть окно, панель: набрать exit
  • Вращение панелей: ctrl-b o, удерживая ctrl - может быть полезно, когда надо "одним глазом" присматривать за происходящим на панели, но, её размер уменьшить до разумного минимума, а когда возникнет в ней необходимость - повернуть, чтобы она заняла место крупной панели, сделать нужное и повернуть обратно.
  • Переключение (attach) сессий не выходя из текущей сессии: ctrl-b s


Дополнительный команды навигации см. man tmux



Баги TMUX


Если в TMUX вывести огромный текстовый файл, то TMux перестает реагировать на команды.


Вывод, либо лечить патчами, либо не выводить большие файлы, либо дождаться завершения вывода.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования