tmux — свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне. tmux является штатным мультиплексором терминалов операционной системы OpenBSD. Программа tmux задумывалась как замена программы GNU Screen.
Отличительными особенностями являются:
- мощный, последовательный, хорошо задокументированный и простой скриптовый командный интерфейс
- окно может быть разбито вертикально и горизонтально на подокна (регионы)
- "подокна" (регионы, фреймы) можно легко двигать, изменять размер и помещать в один из четырёх "макетов"
- поддержка UTF-8, и 256 цветов
- копирование и вставка с несколькими буферами (несколько независимых буферов обмена)
- интерактивные меню для выбора окон, сессий или клиентов
- блокировка терминала: ручная или по таймауту
- чистая, и легко расширяемая база кода под BSD лицензией, находящаяся в активной разработке
- экономное расходование оперативной памяти
- высокая скорость работы
- два варианта комбинаций клавиш: стиль vi и emacs
- клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов)
«Tmux5» участника wiki Nicholas Marriott - http://tmux.sourceforge.net/tmux5.png. Под лицензией BSD с сайта Википедия.
Cессия - краеугольный камень tmux
При старте tmux создаёт новую сессию с единственным окном и отображает её на экране. В статусной строке в самом низу экрана отображается информация о текущей сессии; эта же строка используется для ввода команд tmux’а.
Сессия tmux — это совокупность псевдо-терминалов, находящихся под управлением tmux’а. К каждой сессии привязаны одно или более окон. Экран может быть занят как только одним окном, так и мозаикой из нескольких окон, каждое из которых соответствует одному псевдо-терминалу.
Несколько экземпляров tmux могут быть присоединены к единственной сессии, а в одной сессии может быть неограниченное количество окон. После закрытия всех сессий работа tmux прекращается.
В tmux все сессии отображаются клиентом и управляются одним и тем же сервером. Сервер и каждый клиент являются отдельными процессами, взаимодействие между ними происходит через UNIX-сокеты в /tmp.
Пример такого сокета:
[gz@portal ~]$ ls -lA /tmp/shared
srwxrwx--- 1 gz gz 0 Feb 7 09:53 /tmp/shared
[gz@portal ~]$
Инсталяция
tmux присутствует практически в репозитариях всех популярных Linux и во многих популярных ОС.
OS X
- если вы используете Homebrew:
$ brew install tmux
- если же вы используете MacPorts:
$ sudo port install tmux
Debian-like дистрибутивы Linux
$ sudo apt-get install tmux
RedHat-like дистрибутивы Linux
# yum install tmux
FreeBSD, установка из портов
# cd /usr/ports/sysutils/tmux && make install clean && rehash
Gentoo linux
# emerge --ask tmux
Любителей собирать из сырцов отсылаю к скрипту shime на github
https://gist.github.com/shime/5706655
Итак, мы его поставили! Теперь посмотрим запускается ли наш tmux и пусть расскажет нам какой он версии (обратите внимание, опция version -V - заглавная (большая), так как маленькая несёт совсем иной смысл)
$ tmux -V
tmux 1.6
$
Поставили - что дальше?
Запускаем без ключей
$ tmux
...и получаем сессию tmux - как на картинке :) !
Слегка конкретнее
Что из себя представляет сессия tmux? Нечно, работающее точно так же, как и обычная терминальная сессия (ну почти обычная :) ). Вы можете выйти из неё обычным методом - введя команду exit. Или нажав Ctrl+d
(так можно завершить любую сессию, не только tmux).
В отличие от терминальной сессии при разрыве соединения (допустим Вы открыли её удалённо при помощи ssh), сессия tmux не завершится и вы сможете подключиться к ней в любой момент! Интересно? Удобно? Конечно да!
А раз так, то за мной, читатель - я кратко расскажу тебе про основы обращения с tmux!
Очень кратко
Как управлять tmux
Да очень просто:
- клавиатурными аккордами (hotkeys/горячие клавиши)
- командами/опциями командной строки
- при помощи конфигурационных файлов
Hotkeys (горячие клавиши) - совсем кратко для старта
О нажатиях
Горячие клавиши состоят из комбинации префикса (это своеобразный сигнал tmux о том, что далее последует команда именно ему, а не, скажем, текстовому редактору в окне tmux, что-то типа "Ok, Google") и последующей клавиши-команды (combination of a prefix key, ‘C-b’ (Ctrl+b) by default, followed by a command key).
Префиксные клавиши, по умолчанию это Ctrl+b
, нажимаются одновременно, затем отпускаются и далее нажимается уже командная клавиша. Любители некоторых текстовых редакторов найдут этот способ управления весьма знакомым :). Префиксные клавиши несложно поменять, прописав новую комбинацию (аккорд) в конфигурационный файл. Но об этом позже.
Итак:
Ctrl+b d
- отключиться, от англ. detach. (Точно так же вы отключитесь, если прервётся соединение. Как подключиться обратно и продолжить работу - выполнить команду tmux attach
).
В одной сессии может быть сколько угодно окошек (это напоминает обычные виртуальные консоли, только вместо Ctrl+F1..Fn
используются другие hotkeys (горячие клавиши, аккорды) и находятся эти "виртуальные консоли" в пределах одной сессии tmux).
Ctrl+b c
- создать окошко, от англ. create
Ctrl+b 0...9
- перейти в окошко номер 0..9
Ctrl+b p
- перейти в предыдущее окошко, от англ. previouse
Ctrl+b n
- перейти в следующее окошко, от англ. next
Ctrl+b l
- перейти в предыдущее активное окошко (из которого вы переключились в текущее), от англ. last
Ctrl+b &
- закрыть окошко (а можно просто выполнить команду exit
или нажать hotkey (аккорд) Ctrl+d
в командной строке терминала)