Tmux - консольный мультиплексор

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:083baaa20b8bcd7dab538b1c091d2db8' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Для начала немного общей&nbsp;информации из&nbsp;<a href=\"http://www.wikipedia.org/\">Википедии</a>...</p>\n<p class=\"rtejustify\"><strong><a href=\"http://tmux.sourceforge.net/\">tmux</a></strong>&nbsp;- свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. <strong>tmux</strong> может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к <strong>tmux</strong>, находящемуся в фоне. <strong>tmux</strong> является штатным мультиплексором терминалов <a href=\"http://www.openbsd.org/\">ОС OpenBSD</a>. Программа <strong>tmux</strong> задумывалась как замена программы <a href=\"http://muff.kiev.ua/content/screen-diskonnekty-teper-ne-strashny\"><strong>screen</strong></a>.</p>\n<p class=\"rtejustify\">При старте <strong>tmux</strong> создаёт новую сессию с единственным окном и отображает её на экране. В статусной строке в самом низу экрана отображается информация о текущей сессии; эта же строка используется для ввода команд <strong>tmux</strong>&rsquo;а.</p>\n<p class=\"rtejustify\">Сессия <strong>tmux</strong> -&nbsp;это совокупность псевдо-терминалов, находящихся под управлением <strong>tmux</strong>&rsquo;а. К каждой сессии привязаны одно или более окон. Экран может быть занят как только одним окно, так и мозаикой из нескольких окон, каждое из которых соответствует одному псевдо-терминалу.&nbsp;</p>\n<p class=\"rtejustify\">&nbsp;Основные отличия <strong>tmux</strong>&nbsp;от <a href=\"http://muff.kiev.ua/content/screen-diskonnekty-teper-ne-strashny\">screen</a>&nbsp;такие:</p>\n<ul>\n<li class=\"rtejustify\">Клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов).</li>\n<li class=\"rtejustify\">Механизм автоматизации выполняемых действий с помощью скриптов.</li>\n<li class=\"rtejustify\">Несколько независимых буферов обмена.</li>\n<li class=\"rtejustify\">Два варианта раскладки клавиатуры: стиль <strong>vi</strong> и <strong>emacs</strong>.</li>\n<li class=\"rtejustify\">Более ясный формат описания строки статуса.</li>\n<li class=\"rtejustify\">Возможность отображения вывода команды в строке статуса.</li>\n<li class=\"rtejustify\">Экономное расходование оперативной памяти.</li>\n<li class=\"rtejustify\">Высокая скорость работы.</li>\n<li class=\"rtejustify\">Улучшенная поддержка UTF-8.</li>\n<li class=\"rtejustify\">Интерактивные меню для выбора окон, сессий и клиентов.</li>\n<li class=\"rtejustify\">Более гибкие возможности по разделению окон на регионы.</li>\n</ul>\n<p class=\"rtejustify\">Итак,&nbsp;уже интересно. Выполним установку <strong>tmux</strong> из портов.</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>cd /usr/ports/sysutils/tmux &amp;&amp; make install clean &amp;&amp; rehash</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Итак,&nbsp;установка прошла без проблем... Первый запуск:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td><span style=\"color:rgb(0,0,0)\"><span style=\"font-family:verdana,arial,helvetica,sans-serif; font-size:12px\"># </span><strong><span style=\"font-family:verdana,arial,helvetica,sans-serif; font-size:12px\">tmux</span></strong></span></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">После запуска порадовала панель статуса,&nbsp;включеная по дефолту,&nbsp;да еще и с зеленой подсветкой.&nbsp;Собственно,&nbsp;вот скриншот первой сессии tmux без каких-либо дополнений:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/tmux00.png\" title=\"tmux\"><img alt=\"tmux\" src=\"/files/imagepicker/1/thumbs/tmux00.png\" /></a></p>\n<p class=\"rtejustify\">Как оказалось,&nbsp;сочатание клавиш <strong>Ctrl+a</strong> не работает,&nbsp;нужно использовать сочетание клавиш <strong>Ctrl+b</strong>, что не очень удобно. Но удобно тем,&nbsp;что не создает конфликтов со <strong>Screen</strong>, как в случае с <a href=\"http://muff.kiev.ua/content/minicom-rabotaem-s-oborudovaniem-cherez-rs232\">minicom</a>.</p>\n<p class=\"rtejustify\">Исключая&nbsp;сочетания клавиш в виде <strong>Ctrl+b</strong>, большинство клавиатурных комбинаций совместимы со <strong>Screen</strong>. Так, <strong>Ctrl+b+c </strong>открывает новое окно, а&nbsp;при&nbsp;<strong>Ctrl+b+1</strong> выполняется переход к&nbsp;окну номер один. В то же время некоторые действия выполняются совершенно другими сочетаниями клавиш:</p>\n<ul>\n<li><strong>Ctrl+b+w</strong>&nbsp;- это меню открытых окон</li>\n<li><strong>Ctrl+b+l</strong> -&nbsp;предыдущее окно</li>\n<li><strong>Ctrl+b+&quot;</strong> -&nbsp;разделить окно по вертикали</li>\n<li><strong>Ctrl+b+&amp;</strong> -&nbsp;уничтожает окно.</li>\n</ul>\n<p class=\"rtejustify\">Для отключения от сессии используется все та же комбинация <strong>Ctrl+b+d</strong>, однако для подключения обратно используется другой аргумент командной строки:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><span style=\"color:rgb(0,0,0)\"><span style=\"font-family:verdana,arial,helvetica,sans-serif; font-size:12px\"># <strong>tmux attach</strong></span></span></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Также следует отметить тот факт,&nbsp;что любое действие,&nbsp;выполняемое с помощью сочетания клавиш,&nbsp;можно выполнить из командной строки. Например:</p>\n<ul>\n<li><strong># tmux last-window</strong> - переход к предыдущему окну</li>\n<li><strong># tmux new-window</strong> - создание нового окна</li>\n<li><strong># tmux list-commands</strong> - список поддерживаемых команд</li>\n</ul>\n<p class=\"rtejustify\">Не стоит недооценивать значение команд,&nbsp;при использовании <strong>tmux</strong>. С их помощью выполняется конфигурирование программы. Именно для конфигурирования предназначены две команды: <strong>set-option</strong> и <strong>set-window-option</strong>. <strong>set-option</strong> служит для изменения параметров сессии, <strong>set-window-option</strong> служит для изменения настроек окон.</p>\n<p class=\"rtejustify\">Опции можно внести в конфигурационный файл. Пример <strong>tmux.conf</strong>:&nbsp;</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><span style=\"color:rgb(0,0,0)\"><span style=\"font-family:verdana,arial,helvetica,sans-serif; font-size:12px\"># <strong>cat ~/.tmux.conf</strong></span></span></p>\n<p><span style=\"color:rgb(0,0,0)\"><span style=\"font-family:verdana,arial,helvetica,sans-serif; font-size:12px\"># Изменяем цвет строки статуса на белый<br />\n set -g status-bg white<br />\n # Изменяем правую часть статусной строки<br />\n set -g status-right &#39;#(echo $USER)@#H #(uptime | cut -d &quot;,&quot; -f 1)&#39;<br />\n # Навигация по командной строке и списку окон в режиме vi<br />\n set -g status-keys vi<br />\n setw -g mode-keys vi<br />\n # Размер буфера истории<br />\n set -g history-limit 1000<br />\n # Меняем стандартный префикс на Ctrl+a<br />\n set -g prefix C-a<br />\n unbind C-b<br />\n # Переход к предыдущему окну по Ctrl+a<br />\n bind C-a last-window<br />\n # Ctrl+a+m включает мониторинг активности<br />\n bind M setw monitor-activity on</span></span></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Также есть возможность модифицировать статусную строку. Для этого предназначены команды status-left и status-right. Как можно догадаться, первая влияет на левую часть статус-бара, а вторая - на правую. Формат</p>\n<ul>\n<li>#(команда) - результат выполнения указанной команды</li>\n<li>#H - имя хоста</li>\n<li>#S - имя текущей сессии</li>\n<li>#T - имя текущего окна</li>\n<li>## - символ #</li>\n</ul>\n<p class=\"rtejustify\">Еще одной отличительной особенностью <strong>tmux</strong> является разбиение окон на регионы.</p>\n<p class=\"rtejustify\">В отличие от <strong>Screen</strong>, для разделения окна вертикально на два равных региона используется комбинация <strong>Ctrl+b+&quot;</strong>, а для переключения между регионами - либо комбинация <strong>Ctrl+b+o</strong>, либо <strong>Ctrl+b</strong> и навигационные клавиши. Изменить размер региона можно с помощью комбинаций <strong>Ctrl+b </strong><strong>Alt+Up</strong> и <strong>Ctrl+b </strong><strong>Alt+Down</strong>. Однако основная изюминка скрывается в поддержке нескольких вариантов размещения регионов, для переключения между которыми предназначена комбинация <strong>Ctrl+b+Space</strong>. В частности, регионы могут быть расположены горизонтально, вертикально, интеллектуально, с выравниванием или без.</p>\n<p class=\"rtejustify\">Кстати,&nbsp;есть еще одна приятная особенность. Нажав <strong>Ctrl+b+t</strong> можно вывести на экран часы,&nbsp;нарисованные псевдографикой. Они не будут исчезать с экрана до нажатия любой клавиши.</p>\n<p class=\"rtecenter\">&nbsp;</p>\n<p class=\"rtecenter\"><strong>Скриншоты</strong>&nbsp;</p>\n<div class=\"imgp_title\">&nbsp;</div>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/tmux01.png\" title=\"\"><img alt=\"Image\" src=\"/files/imagepicker/1/thumbs/tmux01.png\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/tmux02.png\" title=\"tmux\"><img alt=\"tmux\" src=\"/files/imagepicker/1/thumbs/tmux02.png\" /></a></p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/tmux03.png\" title=\"tmux\"><img alt=\"tmux\" src=\"/files/imagepicker/1/thumbs/tmux03.png\" /></a></p>\n<p class=\"rtejustify\">На этом обзор закончим. Более подробно с возможностями tmux можно ознакомиться на страницах руководства.</p>\n', created = 1767379291, expire = 1767465691, headers = '', serialized = 0 WHERE cid = '2:083baaa20b8bcd7dab538b1c091d2db8' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767379291, expire = 1767465691, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767379291, expire = 1767465691, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Для начала немного общей информации из Википедии...

tmux - свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне. tmux является штатным мультиплексором терминалов ОС OpenBSD. Программа tmux задумывалась как замена программы screen.

При старте tmux создаёт новую сессию с единственным окном и отображает её на экране. В статусной строке в самом низу экрана отображается информация о текущей сессии; эта же строка используется для ввода команд tmux’а.

Сессия tmux - это совокупность псевдо-терминалов, находящихся под управлением tmux’а. К каждой сессии привязаны одно или более окон. Экран может быть занят как только одним окно, так и мозаикой из нескольких окон, каждое из которых соответствует одному псевдо-терминалу. 

 Основные отличия tmux от screen такие:

  • Клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов).
  • Механизм автоматизации выполняемых действий с помощью скриптов.
  • Несколько независимых буферов обмена.
  • Два варианта раскладки клавиатуры: стиль vi и emacs.
  • Более ясный формат описания строки статуса.
  • Возможность отображения вывода команды в строке статуса.
  • Экономное расходование оперативной памяти.
  • Высокая скорость работы.
  • Улучшенная поддержка UTF-8.
  • Интерактивные меню для выбора окон, сессий и клиентов.
  • Более гибкие возможности по разделению окон на регионы.

Итак, уже интересно. Выполним установку tmux из портов.

# cd /usr/ports/sysutils/tmux && make install clean && rehash

Итак, установка прошла без проблем... Первый запуск:

# tmux

После запуска порадовала панель статуса, включеная по дефолту, да еще и с зеленой подсветкой. Собственно, вот скриншот первой сессии tmux без каких-либо дополнений:

tmux

Как оказалось, сочатание клавиш Ctrl+a не работает, нужно использовать сочетание клавиш Ctrl+b, что не очень удобно. Но удобно тем, что не создает конфликтов со Screen, как в случае с minicom.

Исключая сочетания клавиш в виде Ctrl+b, большинство клавиатурных комбинаций совместимы со Screen. Так, Ctrl+b+c открывает новое окно, а при Ctrl+b+1 выполняется переход к окну номер один. В то же время некоторые действия выполняются совершенно другими сочетаниями клавиш:

  • Ctrl+b+w - это меню открытых окон
  • Ctrl+b+l - предыдущее окно
  • Ctrl+b+" - разделить окно по вертикали
  • Ctrl+b+& - уничтожает окно.

Для отключения от сессии используется все та же комбинация Ctrl+b+d, однако для подключения обратно используется другой аргумент командной строки:

# tmux attach

Также следует отметить тот факт, что любое действие, выполняемое с помощью сочетания клавиш, можно выполнить из командной строки. Например:

  • # tmux last-window - переход к предыдущему окну
  • # tmux new-window - создание нового окна
  • # tmux list-commands - список поддерживаемых команд

Не стоит недооценивать значение команд, при использовании tmux. С их помощью выполняется конфигурирование программы. Именно для конфигурирования предназначены две команды: set-option и set-window-option. set-option служит для изменения параметров сессии, set-window-option служит для изменения настроек окон.

Опции можно внести в конфигурационный файл. Пример tmux.conf

# cat ~/.tmux.conf

# Изменяем цвет строки статуса на белый
set -g status-bg white
# Изменяем правую часть статусной строки
set -g status-right '#(echo $USER)@#H #(uptime | cut -d "," -f 1)'
# Навигация по командной строке и списку окон в режиме vi
set -g status-keys vi
setw -g mode-keys vi
# Размер буфера истории
set -g history-limit 1000
# Меняем стандартный префикс на Ctrl+a
set -g prefix C-a
unbind C-b
# Переход к предыдущему окну по Ctrl+a
bind C-a last-window
# Ctrl+a+m включает мониторинг активности
bind M setw monitor-activity on

Также есть возможность модифицировать статусную строку. Для этого предназначены команды status-left и status-right. Как можно догадаться, первая влияет на левую часть статус-бара, а вторая - на правую. Формат

  • #(команда) - результат выполнения указанной команды
  • #H - имя хоста
  • #S - имя текущей сессии
  • #T - имя текущего окна
  • ## - символ #

Еще одной отличительной особенностью tmux является разбиение окон на регионы.

В отличие от Screen, для разделения окна вертикально на два равных региона используется комбинация Ctrl+b+", а для переключения между регионами - либо комбинация Ctrl+b+o, либо Ctrl+b и навигационные клавиши. Изменить размер региона можно с помощью комбинаций Ctrl+b Alt+Up и Ctrl+b Alt+Down. Однако основная изюминка скрывается в поддержке нескольких вариантов размещения регионов, для переключения между которыми предназначена комбинация Ctrl+b+Space. В частности, регионы могут быть расположены горизонтально, вертикально, интеллектуально, с выравниванием или без.

Кстати, есть еще одна приятная особенность. Нажав Ctrl+b+t можно вывести на экран часы, нарисованные псевдографикой. Они не будут исчезать с экрана до нажатия любой клавиши.

 

Скриншоты 

 

Image

tmux

tmux

На этом обзор закончим. Более подробно с возможностями tmux можно ознакомиться на страницах руководства.

Ваша оценка: Нет Средняя: 4.3 (7 голосов)

Вставай, Україно!

Литература

Разъяренный Админ не нервно моргает, а материт Вас, используя двоичный код.