...

среда, 15 января 2014 г.

Обзор терминальных мультиплексоров: tmux и dvtm

Архитектор Матрицы

Терминал принадлежит к числу наиболее часто используемых инструментов администратора. Нередко во время работы приходится одновременно держать открытыми несколько вкладок терминала: одну — для управления веб-сервером, другую — для управления базой данных, третью — для копирования файлов и т.п. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, и это существенно усложняет работу. Существуют специальные программы, c помощью которых можно решить проблему множественных терминалов. Они называются терминальными мультиплексорами.



Терминальные мультиплексоры позволяют одновременно работать с несколькими терминальными сессиями в одном окне. Принцип их работы заключается в следующем: терминал с множественными вкладками создается на удаленной машине; на локальной машине окно терминала делится на несколько частей, и в каждой из них могут быть запущены любые приложения и процессы. От удаленной машины можно отключиться (текущая сессия будет сохранена), а затем снова подключиться к ней и продолжать работу.


Самым известным и распространенным терминальным мультиплексором является, конечно же, GNU Screen. Весьма существенным его недостатком является крайне неудачное визуальное представление: например, в варианте «из коробки» в Screen невозможно наглядно отобразить на экране все открытые окна (для этого нужно устанавливать специальный патч).


В последнее время широкое распространение получили и другие терминальные мультиплексоры, более наглядные и удобные в работе — например, tmux и dvtm, которым и посвящена эта статья.


Tmux




Tmux работает под Linux и под MacOS; он включен в официальные репозитории большинства современных Linux-систем и может быть установлен при помощи стандартного менеджера пакетов.

Запустим tmux при помощи следующей команды:



$ tmux



В нижней части экрана появится строка состояния:

tmux


Управление всеми терминальными мультиплексорами осуществляется так: сначала нажимается так называемая префиксная комбинация клавиш, а после нее — клавиша, управляющая той или иной функцией. В tmux по умолчанию в качестве префиксной установлена комбинация Ctrl+B. Чтобы разделить экран терминала на две половины вертикальной чертой, нужно сначала нажать Ctrl+B, а затем — % (т.е. Shift+5):


tmux 1


Каждую из получившихся вкладок можно также разделить на две части горизонтальной чертой при помощи комбинации клавиш Ctrl+B+” (сначала нажимаем Ctrl+B, а затем — “).


Разделить окно на две части можно также при помощи команд:



$ tmux split-window -h



(разделить на две части горизонтально)

$ tmux split-window -v



(разделить на две части вертикально)

Чтобы перейти из одной части окна в другую, нажимаем сначала Ctrl+B, а затем — клавиши ←, ↑, → и ↓.


Чтобы создать новое окно, нажмем комбинацию клавиш Ctrl+B+C. В рамках одной сессии может быть задействовано неограниченное количество окон; каждое из них может быть в свою очередь разделено на части. Переключение между окнами осуществляется при помощи следующих комбинаций:



  • Ctrl+B+ 0...9 — перейти в указанное окно;

  • Ctrl+B+P — перейти в предыдущее окно;

  • Ctrl+B+N — перейти в следующее окно;

  • Ctrl+B+L — перейти в предыдущее активное окно (т.е. в то, из которого ранее был осуществлен переход в текущее окно);

  • Ctrl+B+X — закрыть окно (это можно также сделать при помощи команды exit).


Текущую сессию tmux можно прервать, нажав комбинацию клавиш Ctrl+B+D. Чтобы возобновить прерванную сессию, нужно ввести команду:



$ tmux attach

Прерванная сессия будет восстановлена; при этом все данные и процессы будут сохранены.

Эту команду можно ввести и в сокращенном виде:



$ tmux -a

Чтобы вывести на экран список сессий, нужно выполнить следующую команду:



$ tmux ls

Завершение открытой сессии осуществляется при помощи команды:



$ tmux kill-session -t [имя сессии]

Чтобы завершить все открытые сессии одновременно, нужно ввести команду:



$ tmux kill-server

Рекомендации по настройке


Отображение строки состояния в нижней части экрана можно отключить. Для этого введем следующую команду:



$ tmux set -g status off

А чтобы отключенная строка состояния отображалась снова — команду:



$ tmux set -g status on

Можно изменить положение строки состояния и сделать так, чтобы она находилась не в нижней, а в верхней части экрана:



$ set -g status-position top

Цвет строки состояния изменяется при помощи следующей команды:



tmux set -g status-bg blue

Dvtm


Dvtm (dynamic virtual terminal manager) представляет собой терминальный мультиплексор, по функциональности во многом близкий к tmux.

Он также включен в официальные репозитории большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов.

После запуска dvtm в верхней части экрана будет отображена строка состояния:


dvtm


Управление dvtm организовано по тому же принципу, что и управление tmux. В качестве префиксной используется комбинация клавиш Ctrl+G. Понятие окна в dvtm интерпретируется совершенно иначе по сравнению с tmux. Для создания нового окна используется комбинация клавиш Ctrl+G+C. При нажатии этой комбинации экран будет разделен на две части; при этом каждая из них является отдельным окном:


dvtm


При помощи той же самой комбинации клавиш можно создавать дополнительные окна:


dvtm


Порядок расположения окон можно изменять. Выделяются следующие варианты расположения:



  • вертикальное (Ctrl+G+T) — текущее окно расположено в левой половине экрана; все остальные окна расположены в правой половине;

  • горизонтальное (Ctrl+G+B) — основное рабочее окно занимает верхнюю половину экрана, все остальные окна располагаются внизу;

  • режим сетки (Ctrl+G+G) — экран делится на части одинакового размера по количество созданных окон;

    полноэкранный режим (Ctrl+G+M) — текущее окно занимает весь экран.


Переходить от одного режима расположения окон к другому можно, нажимая омбинацию Ctrl+G+пробел.


Для управления окнами используются следующие клавиатурные комбинации:



  • Ctrl+G+X — закрыть текущее окно;

  • Ctrl+G+J — перейти в следующее окно;

  • Ctrl+G+K — перейти в предыдущее окно;

  • Ctrl+G+0…9 — перейти в указанное окно (цифры обозначают номер окна);

  • Ctrl+G+L — увеличить ширину текущего окна;

  • Ctrl+G+H — уменьшить ширину текущего окна;

  • Ctrl+G+Q — закрыть все окна и выйти из dvtm.


В dvtm имеется одна интересная функция, которой больше нет ни в одном из известных нам терминальных мультиплексоров: нажатие клавиш в текущем окне могут автоматически воспроизводиться во всех остальных открытых окнах. Нажмем комбинацию клавиш Ctrl+G+A. Если после этого нажать на какую-нибудь клавишу, нажатие сработает во всех окнах сразу.


Если ввести в текущем окне какую-либо команду, она также будет одновременно выполнена во всех открытых окнах. С помощью этой функции можно, например, осуществлять одновременную настройку нескольких удаленных серверов по одинаковой схеме.


В отличие от tmux, dvtm не поддерживает сохранения и возобновления сессий. Для этого используется dtach — вспомогательная утилита, которая обеспечивает возможность отключения от текущей сессии и последующего подключения к ней для любых консольных приложений. Устанавливается при помощи стандартного менеджера пакетов.


Чтобы получить возможность отключать сессии и снова подключаться к ним, нужно запустить dvtm под dtach:



$ dtach -c /tmp/dvtm-session -r winch dvtm

При работе с dtach нужно явно указывать сокет, с помощью которого идентифицируется сессия. Доступ к сессии целиком и полностью определяется доступом к сокету.


Чтобы покинуть dtach, нужно нажать комбинацию Ctrl+\. Подключение к существующей сессии осуществляется при помощи команды:



$ dtach -a /tmp/dvtm-session -r winch

Более подробная информация о dtach представлена на официальной мэн-странице.


В заключение приведем небольшую шпаргалку — таблицу основных команд и клавиатурных комбинаций, используемых в screen, tmux и dvtm.


Сравнительная таблица команд и клавиатурных комбинаций


Управление сессиями















































Операцияscreentmuxdvtm
Запустить новую сессиюscreentmux

tmux new-session

tmux new-session -s [имя сессии]
Возможность сохранения и возобновления сессий не поддерживается — для этого нужно устанавливать утилиту dtach, реализующую такую возможность для всех консольных приложений. Запуск dvtm под dtach осуществляется при помощи команды:

dtach -c /tmp/dvtm-session -r winch dvtm
Подключиться к уже созданной сессииscreen -rtmux attach

tmux attach-session -s [имя сессии]

tmux -a
dtach -a /tmp/dvtm-session -r winch
Отсоединиться от текущей сессииCtrl+A Ctrl+Dtmux detach ИЛИ Ctrl+B+DCtrl+\
Просмотреть список активных сессийscreen -lstmux lsps aux | grep dtach
Удалить сессиюscreen -r [имя сессии] -X quittmux kill-session -t [имя сессии]
Удалить все сессииCtrl+A+\tmux kill-server

Управление окнами

































































Операцияscreentmuxdvtm
Cоздать новое окноCtrl+A+CCtrl+B+CCtrl+G+C
Перейти в указанное окноCtrl+B+0....9Ctrl+G+0....9
Перейти в предыдущее окноCtrl+A+PCtrl+B+PCtrl+G+J
Перейти в следующее окноCtrl+A+NCtrl+B+NCtrl+G+K
Перейти в последнее активное окноCtrl+A+LCtrl+B+L
Показать список всех открытых оконCtrl+A+"
Увеличить ширину окнаCtrl+B+Ctrl+N→ или Ctrl+B+Alt+→ (увеличивает с большим шагом)Ctrl+G+L
Уменьшить ширину окнаCtrl+B+Ctrl+←Ctrl+G+H
Закрыть текущее окноCtrl+A+XCtrl+B+XCtrl+G+X

Читателей, не имеющих возможности комментировать посты на Хабре, приглашаем к нам в блог.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий