- PVSM.RU - https://www.pvsm.ru -
Терминал принадлежит к числу наиболее часто используемых инструментов администратора. Нередко во время работы приходится одновременно держать открытыми несколько вкладок терминала: одну — для управления веб-сервером, другую — для управления базой данных, третью — для копирования файлов и т.п. Когда открытых вкладок очень много, отслеживать одновременно все процессы становится трудно, и это существенно усложняет работу. Существуют специальные программы, c помощью которых можно решить проблему множественных терминалов. Они называются терминальными мультиплексорами.
Терминальные мультиплексоры позволяют одновременно работать с несколькими терминальными сессиями в одном окне. Принцип их работы заключается в следующем: терминал с множественными вкладками создается на удаленной машине; на локальной машине окно терминала делится на несколько частей, и в каждой из них могут быть запущены любые приложения и процессы. От удаленной машины можно отключиться (текущая сессия будет сохранена), а затем снова подключиться к ней и продолжать работу.
Самым известным и распространенным терминальным мультиплексором является, конечно же, GNU Screen. Весьма существенным его недостатком является крайне неудачное визуальное представление: например, в варианте «из коробки» в Screen невозможно наглядно отобразить на экране все открытые окна (для этого нужно устанавливать специальный патч).
В последнее время широкое распространение получили и другие терминальные мультиплексоры, более наглядные и удобные в работе — например, tmux и dvtm, которым и посвящена эта статья.
Tmux работает под Linux и под MacOS; он включен в официальные репозитории большинства современных Linux-систем и может быть установлен при помощи стандартного менеджера пакетов.
Запустим tmux при помощи следующей команды:
$ tmux
В нижней части экрана появится строка состояния:

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

Каждую из получившихся вкладок можно также разделить на две части горизонтальной чертой при помощи комбинации клавиш Ctrl+B+” (сначала нажимаем Ctrl+B, а затем — “).
Разделить окно на две части можно также при помощи команд:
$ tmux split-window -h
(разделить на две части горизонтально)
$ tmux split-window -v
(разделить на две части вертикально)
Чтобы перейти из одной части окна в другую, нажимаем сначала Ctrl+B, а затем — клавиши ←, ↑, → и ↓.
Чтобы создать новое окно, нажмем комбинацию клавиш Ctrl+B+C. В рамках одной сессии может быть задействовано неограниченное количество окон; каждое из них может быть в свою очередь разделено на части. Переключение между окнами осуществляется при помощи следующих комбинаций:
Текущую сессию 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 (dynamic virtual terminal manager) представляет собой терминальный мультиплексор, по функциональности во многом близкий к tmux.
Он также включен в официальные репозитории большинства современных Linux-систем и устанавливается при помощи стандартного менеджера пакетов.
После запуска dvtm в верхней части экрана будет отображена строка состояния:

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

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

Порядок расположения окон можно изменять. Выделяются следующие варианты расположения:
Переходить от одного режима расположения окон к другому можно, нажимая омбинацию Ctrl+G+пробел.
Для управления окнами используются следующие клавиатурные комбинации:
В 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.
| Операция | screen | tmux | dvtm |
|---|---|---|---|
| Запустить новую сессию | screen | tmux tmux new-session tmux new-session -s [имя сессии] |
Возможность сохранения и возобновления сессий не поддерживается — для этого нужно устанавливать утилиту dtach, реализующую такую возможность для всех консольных приложений. Запуск dvtm под dtach осуществляется при помощи команды: dtach -c /tmp/dvtm-session -r winch dvtm |
| Подключиться к уже созданной сессии | screen -r | tmux attach tmux attach-session -s [имя сессии] tmux -a |
dtach -a /tmp/dvtm-session -r winch |
| Отсоединиться от текущей сессии | Ctrl+A Ctrl+D | tmux detach ИЛИ Ctrl+B+D | Ctrl+ |
| Просмотреть список активных сессий | screen -ls | tmux ls | ps aux | grep dtach |
| Удалить сессию | screen -r [имя сессии] -X quit | tmux kill-session -t [имя сессии] | — |
| Удалить все сессии | Ctrl+A+ | tmux kill-server | — |
| Операция | screen | tmux | dvtm |
|---|---|---|---|
| Cоздать новое окно | Ctrl+A+C | Ctrl+B+C | Ctrl+G+C |
| Перейти в указанное окно | — | Ctrl+B+0....9 | Ctrl+G+0....9 |
| Перейти в предыдущее окно | Ctrl+A+P | Ctrl+B+P | Ctrl+G+J |
| Перейти в следующее окно | Ctrl+A+N | Ctrl+B+N | Ctrl+G+K |
| Перейти в последнее активное окно | Ctrl+A+L | Ctrl+B+L | — |
| Показать список всех открытых окон | Ctrl+A+" | — | — |
| Увеличить ширину окна | — | Ctrl+B+Ctrl+N→ или Ctrl+B+Alt+→ (увеличивает с большим шагом) | Ctrl+G+L |
| Уменьшить ширину окна | — | Ctrl+B+Ctrl+← | Ctrl+G+H |
| Закрыть текущее окно | Ctrl+A+X | Ctrl+B+X | Ctrl+G+X |
Читателей, не имеющих возможности комментировать посты на Хабре, приглашаем к нам в блог [2].
Автор: AndreiYemelianov
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/52798
Ссылки в тексте:
[1] Image: http://blog.selectel.ru/obzor-terminalnyx-multipleksorov-tmux-i-dvtm/
[2] блог: http://slc.tl/bpczg
[3] Источник: http://habrahabr.ru/post/209130/
Нажмите здесь для печати.