Использование менеджеров терминалов dvtm и dtach в Ubuntu

Published by Leave your thoughts

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

Терминальные мультиплексоры позволяют управлять несколькими окнами терминала в пределах одной ведущей сессии (master). С их помощью можно легко систематизировать окна и взаимодействовать с ними (примерно как при помощи графического оконного менеджера). Самыми популярными мультиплексорами считаются screen и tmux.

Данное руководство описывает различные подходы к организации терминалов и управлению ими. Конечно, упомянутые выше инструменты подходят в большинстве случаев, однако иногда система требует более простого решения. Руководство научит вас комбинировать инструменты dvtm (dynamic virtual terminal manager, позволяет управлять окнами) и dtach (утилита для отделения сессий).

Примечание: Руководство выполнено на виртуальном сервере Ubuntu 12.04, но подойдёт и для других дистрибутивов.

Установка компонентов

Для начала нужно установить все необходимые для работы инструменты.

Установите dtach и dvtm. Эти пакеты можно найти в официальном репозитории Ubuntu 12.04. Обновите индекс и установите пакеты:

sudo apt-get update
sudo apt-get install dvtm dtach

Менеджер терминалов dvtm

Менеджер терминалов dvtm – это оконный менеждер, который эмулирует функциональные возможности и свойства популярных графических оконных менеджеров, таких как awesomewm, dwm, i3, xmonad и т.п. Он позволяет быстро организовать окна и управлять пространством экрана.

Чтобы начать сессию dvtm, вызовите его с помощью командной строки:

dvtm
─[demouser@dvtm: ~ #1]────────────────────────────────────────────────
demouser@dvtm:~#

Как видите, появилась новая сессия с заголовком. Этот заголовок является заголовком окна, он сообщает пользователю имя сессии и номер окна.

Все команды dvtm начинаются с последовательности клавиш mod. Эта последовательность нажатия клавиш подаёт менеджеру сигнал о том, что он должен считывать и все следующие последовательности клавиш.

По умолчанию вместо mod можно нажать CTRL-g. То есть, команда имеет такой формат:

CTRL-g [keypress]

Основы управления окнами

Попробуйте поработать с большим количеством окон. Для этого нужно знать несколько основных последовательностей.

Следующая последовательность позволяет создать второе окно:

CTRL-g c

Удерживайте клавишу CTRL, нажмите клавишу G, а затем отпустите обе эти клавиши и нажмите С. После этого среда будет разделена по вертикали:

──[demouser@dvtm: ~ | #1]──────────┬──[demouser@dvtm: ~ | #2]──────────
demouser@dvtm:~#                   │demouser@dvtm:~#
...................................
...................................

Итак, теперь у вас есть два окна. Попробуйте ввести какие-либо данные, и они появятся в одном из окон. Для переключения окон используются такие комбинации:

CTRL-g j        #   к следующему окну
CTRL-g k        #   к предыдущему окну

Если вы хотите открыть определённое окно, вы можете просто сослаться на его порядковый номер:

CTRL-g [окно #]

К примеру, чтобы открыть окно 3, нужно ввести:

CTRL-g 3

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

CTRL-g x

Закрыть все окна можно с помощью комбинации:

CTRL-g q

Настройка шаблона размещения окон

Создавая новые окна, вы заметите, что некоторые из них занимают больше места, в то время как другие почти не видны. Это значит, что вам нужно изменить шаблон размещения окон.

По умолчанию окна располагаются по вертикали. В таком случае создаётся ведущее окно, оно занимает основное пространство, а дополнительные окна распределяются по оставшемуся пространству экрана.

Существует и другой шаблон. Создайте четыре или пять окон и запустите в них какие-нибудь программы.

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

CTRL-g [SPACE]

По умолчанию шаблоны расположены в таком порядке:

  • vertical stack: шаблон по умолчанию. Слева располагается ведущее окно, а остальные окна заполняют экран справа.
  • grid: все окна занимают примерно одинаковое пространство. В данном случае ведущего окна нет (хотя технически ведущим является верхнее окно слева).
  • bottom stack: ведущее окно занимает верхнюю половину экрана, а остальные окна – нижнюю.
  • fullscreen: разворачивает текущее окно во весь экран. При этом окна можно переключать.

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

CTRL-g t   #vertical stack
CTRL-g g   # grid
CTRL-g b   # bottom stack
CTRL-g m   # fullscreen

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

CTRL-g [ENTER]

Если вы используете эту комбинацию в текущем ведущем окне, то ведущим станет следующее окно (по часовой стрелке).

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

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

CTRL-g l    # увеличить пространство ведущего окна
CTRL-g h    # уменьшить пространство ведущего окна

Иногда окно становится ненужным на некоторое время, но оно всё равно должно быть доступным. Традиционные менеджеры окон (в том числе и dvtm) позволяют свернуть окно.

Откройте окно, которое нужно свернуть, и нажмите:

CTRL-g .

На самом деле, это функция переключения. Вы можете по-прежнему легко просматривать окна и выбирать свёрнутые окна с помощью CTRL-g j и CTRL-g k или сославшись на его номер (CTRL-G #). Чтобы восстановить окно, просто выберите его снова и снова нажмите:

CTRL-g .

Возможность просматривать свернутые окна очень удобна, поскольку так ими можно управлять и на них ссылаться. Тем не менее, иногда свёрнутые окна мешают, и вам нужны только открытые окна. Для этого dvtm предлагает ряд специальных последовательностей. Предположим, у вас есть 5 окон, окна №2 и №4 свёрнуты. Чтобы переключиться между окнами 1, 3 и 5, используйте:

CTRL-g u    # к следующему открытому окну
CTRL-g i    # к предыдущему открытому окну

Есть еще одна команда, которая может пригодиться. Она позволяет посылать данные клавиатуры во все терминальные окна одновременно.

CTRL-g a

Эта команда отправит все выходные данные с клавиатуры в каждое отдельное окно. Чтобы отключить это поведение, введите команду повторно.

Утилита dtach

Одна из функций, которой, по мнению многих пользователей, не хватает терминальным  мультиплексорам – это постоянные сеансы. Такая функция позволяет отсоединиться от сеанса и оставить окна и все данные в работе. В дальнейшем, вы можете подключиться к сеансу снова, чтобы продолжить работу.

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

Для начала закройте текущую сессию dvtm.

CTRL-g q

Запустите сессию dtach:

dtach -A /tmp/dvtm -r winch dvtm

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

  • -А: этот флаг подключается к текущей сессии (если такая существует), в противном случае он создает новую сессию и прикрепляется к ней.
  • /tmp/dvtm: это сокет, который утилита dtach будет использовать для обмена информацией. Сокет позволяет ограничить доступ других пользователей к сессии.
  • -r winch: чтобы после восстановления сессия отображалась правильно, утилита dtach должна отправить программе сигнал WINCH.
  • dvtm: это значит, что в новой сессии нужно запустить dvtm

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

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

CTRL-\

Чтобы восстановить сессию, просто введите эту команду снова.

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

Откройте настройки оболочки:

nano ~/.bashrc

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

alias wm="dtach -A /tmp/dvtm -r winch dvtm"

Сохраните и закройте файл. Обновите настройки:

source ~/.bashrc

Теперь команда wm будет создавать сессию dtach (если такой сессии пока не существует) и запускать в ней dvtm. Если сессия существует, команда восстановит её.

Заключение

Как видите, инструменты dvtm и dtach очень просты и при этом производительны. С их помощью можно создать очень гибкое окружение, позволяющее использовать большое количество окон.

Tags: , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>