Полное руководство по использованию byobu

Byobu (произносится так) — это японский термин для декоративных многопанельных экранов, которые служат складными перегородками. Byobu также является проектом программного обеспечения с открытым исходным кодом, который представляет собой текстовый оконный менеджер и терминальный мультиплексор. Терминальный мультиплексор (сокращение от tmux) одновременно управляет несколькими терминальными сеансами.

GNU Screen — терминальный мультиплексор, который используется в Unix-подобных операционных системах. Tmux — еще один терминальный мультиплексор, который включает в себя большинство функций GNU Screen. Byobu — это расширение для GNU Screen или tmux, используемое с операционной системой Linux. Бёбу имеет следующие особенности:

  • Он поддерживает уведомления о состоянии.
  • Он сохраняет состояние на удаленном сервере.
  • Он управляет окнами терминала.

Давайте установим byobu и изучим эти функции.

Интал Бёбу

В macOS byobu можно установить с brew:

% brew install byobu

В выводе установки рекомендуется установить BYOBU_PREFIX в профиле:

export BYOBU_PREFIX=/usr/local

В окне терминала введите следующую команду, и конкретное окно запустит сеанс byobu.

% byobu

Введите следующую команду, и любое вновь открытое окно терминала автоматически запустит сеанс byobu.

% byobu-enable
The Byobu window manager will be launched automatically at each text login.
To disable this behavior later, just run:
  byobu-disable

Как указано в выходных данных, автоматический сеанс byobu можно отключить с помощью byobu-disable.

В остальной части этой статьи автоматический сеанс byobu не используется.

Уведомления о статусе

Вот обычное окно терминала:

Как только byobu включен, происходят некоторые изменения:

  1. Заголовок окна терминала предоставляет дополнительную информацию о пользователе и системном IP-адресе.
  2. В нижней части окна терминала отображается ряд красочных сведений о состоянии.
  • logo — логотип операционной системы, являющийся логотипом Apple.
  • arch — системная архитектура, macOS 11.4.
  • windows — каждое открытое окно пронумеровано, а текущее активное окно выделено и отмечено звездочкой.
  • apport — символ, отображаемый, если есть ожидающие отчеты о сбоях, то есть 23!.
  • uptime — общее время безотказной работы системы с момента последней загрузки, которое составляет 3d20h.
  • load_average — средняя загрузка системы за последнюю минуту, что указывает на использование 2.56 ресурсов ЦП.
  • cpu_count — количество процессоров или ядер в системе, равное 12. Поскольку используется 2.56 из 12 ЦП, система загружена примерно на 21%.
  • cpu_freq — текущая частота каждого процессора, равная 2.6GHz.
  • memory — общая доступная память (16.6G) и используемый процент (63%) в системе.
  • ip_address — IPv4-адрес системы (192.168.1.228), который можно настроить для отображения IPv6-адреса.
  • date — системная дата, которая равна 2022–01–08.
  • time — системное время, которое равно 10:03:25.

3. Информацию о состоянии можно переключать с помощью Shift-F5.

  • whoami — имя пользователя, владеющего сеансом экрана.

4. Статус внизу автоматически обновляется через разумные промежутки времени. Нажатие F5 перезагружает профиль и обновляет статус.

Состояние удаленного сервера сохраняется

Byobu обрабатывает сеансы ssh иначе, чем обычные окна терминала. Сравним отличия.

Обычное окно терминала

У нас есть удаленный сервер, на котором установлено Create React App. Мы подключаемся к серверу через обычное окно терминала и выполняем npm start. Удаленный рабочий стол показывает, что приложение Create React запускается на localhost://3000.

Мы выполняем команду на kill -9 <ssh process id>, и удаленный процесс завершается вместе с сеансом ssh.

Окно терминала Бёбу

Мы запускаем тот же вариант использования, используя окно терминала byobu. Выполните npm start, и удаленный рабочий стол покажет запуск приложения Create React в localhost://3000.

Мы выполняем команду на kill -9 <ssh process id>, и удаленный рабочий стол показывает, что процесс продолжает работать, независимо от того, что сеанс ssh завершился.

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

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

Byobu — это текстовый оконный менеджер и терминальный мультиплексор. Он управляет несколькими окнами и несколькими сеансами.

Нажимая Shift-F1, мы видим использование byobu:

Мы добавляем строку 45, чтобы показать, как выйти из текущего окна, сеанса или самого byobu.

Может быть несколько способов выполнить одно и то же. Например, строки 7 и 8 показывают разные способы перемещения фокуса между окнами.

Некоторые комбинации клавиш могут не работать на определенной платформе из-за конфликтов привязки клавиш на этой платформе. Например, мы не можем использовать Ctrl-6 для выхода в macOS.

Вкладки в обычном окне терминала

Мы можем создавать вкладки в обычном окне терминала. Нажатие Cmd-t может создать новую вкладку. Вкладки сосуществуют в окне терминала, но мы можем просматривать только одну вкладку за раз.

Создать новое окно byobu

Для окна терминала byobu нажатие F2 запускает новое окно, похожее на вкладку окна терминала. Окна Бёбу сосуществуют в окне терминала Бёбу, но мы можем просматривать только одну вкладку за раз.

Нажав F2 3 раза, имеем 4 окна бёбу (включая исходное). Их имена 0, 1, 2 и 3. Последний (под номером 3) активен.

Щелкая F3 или F4, мы можем перемещать фокус вперед или назад по разным окнам.

Нажав F8, мы можем переименовать текущее окно. Мы переименовываем окно 2 в second, а окно 3 в third. Теперь 4 окна называются 0, 1, second и third.

Создать новую сессию byobu

Запустите другое окно терминала и превратите его в окно терминала byobu (набрав byobu). Новое окно терминала отражает последнее окно терминала byobu. Мы вводим одно окно терминала, и оно отображается в обоих окнах терминала.

Это связано с тем, что два окна терминала используют один и тот же сеанс. Что, если для каждого окна терминала нужен отдельный сеанс?

Мы можем создать новую сессию. В меню byobu сказано, что Ctrl-Shift-F2 поможет, но это не работает на macOS.

Вместо этого мы можем использовать команду для достижения этого. byobu new создает безымянный сеанс. byobu new -s <session-name> создает именованный сеанс.

Введите byobu new -s newSession, чтобы создать второе окно терминала byobu. И теперь два окна терминала byobu независимы.

Кроме того, мы видим новое уведомление о состоянии сеансов.

сеанс — каждый сеанс byobu отображает имя сеанса или номер сеанса, если он безымянный.

Когда у нас есть более одного сеанса byobu, ввод byobu спрашивает, к какому сеансу подключиться. У нас есть 4 варианта:

  1. Прикрепите к существующему tmux сеанса 1, который имеет 4 окна.
  2. Прикрепите к существующему tmux сеанса newSession, который имеет 1 окно.
  3. Создайте новую сессию byobu.
  4. Запустить оболочку без byobu.

Эти варианты также могут быть вызваны командой byobu-select-session.

Создание разделенных окон byobu

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

Нажимаем Shift-F2 2 раза, и получаем 3 горизонтально разделенных бёбу окна.

Мы можем использовать Shift-Left/Shift-Right/Shift-Up/Shift-Down для перемещения фокуса между разбиениями. В каждом активном окне мы можем выполнять работу. Замечательно, что мы можем просматривать эти окна одновременно.

Он работает идеально, пока мы не попытаемся использовать Ctrl-F2 для создания вертикального разделения. Это не работает на macOS. Кроме того, немного грубо настроить размеры окна. Мы хотели бы иметь поддержку мыши для разделенных byobu окон.

Что нам делать?

Создание файла ~/.byobu/.tmux.conf решает все наши проблемы.

Строка 1 устанавливает префикс привязки клавиш к обратной галочке (`).

Строка 2 включает поддержку мыши.

Строка 3 устанавливает цвет терминала.

Ссылка 4 связывает ключ `r для обновления файла конфигурации.

Ссылка 5 связывает ключ `- для создания вертикального разделения.

Ссылка 6 связывает ключ `| для создания горизонтального разделения.

С этой волшебной конфигурацией мы можем свободно создавать сплиты и использовать мышь для выбора и изменения размера сплитов.

Shift-F11 увеличивает масштаб разделения, и та же самая команда уменьшает масштаб разделения.

Что еще?

Можем ли мы присоединиться к разделенным окнам?

Да, проще всего выйти из нежелательных окон (Ctrl-d).

Заключение

Мы показали интересные возможности byobu, текстового оконного менеджера и терминального мультиплексора. Это помогает нам сохранить сеанс удаленного рабочего стола даже после того, как сеанс ssh уже существует. Кроме того, разделение окон представляет собой глобальное представление нескольких частей текущей работы, что полезно в современной облачной среде микросервисов.

Вы можете перейти на официальный сайт byobu, чтобы узнать подробности.

Спасибо за прочтение. Я надеюсь, что это было полезно. Если вам интересно, ознакомьтесь с другими моими статьями на Medium.

Примечание. Спасибо Уриану Чангу и Марку Мерсеру за предоставление команд и конфигураций byobu.