Byobu терминал. Удобная работа в консоли на сервере через ssh

Категория: Shell

Использование терминала (консоли) Byobu.

Зачем:

  1. Много-оконный режим (несколько окон/вкладок на одной ssh сессии).
  2. Сохраняет окна и запущенные скрипты на сервере после отключения или обрыва ssh сессии.
  3. Разделение экрана несколькими вкладами (не пользовался).

Установка:

sudo apt install byobu
Для Oracle Linux 9 aarch64 нужно собирать из исходников, это быстро:
curl https://gist.github.com/Kerren-Entrostat/9f4999715408beb9a5c6abd89558fc93 > install_byobu.sh
chmod +x install_byobu.sh
sudo yum install -y tar screen tmux make
./install_byobu.sh
#bind '"\C-h": backward-kill-word'
#bash <(curl -s qip.cx/vps/byobu.sh)

Запустить новую сессию или после обрыва ssh-соединения:

byobu
byobu -S <session-name> ## Подключение к сессии по имени "session name"

Запускать byobu терминал при входе на сервер:

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


Горячие клавиши

F2
Новая вкладка.
Ctrl+F6
Закрыть вкладку (или командой exit).
F3
Предыдущая вкладка.
F4
Следующая вкладка.
Ctrl+Shift+F3
Переместить вкладку влево.
Ctrl+Shift+F4
Переместить вкладку вправо.
Shift+F5
Переключить статус панель на другой конфиг.
Alt+Page UpAlt+Page Down
Пролистать историю вывода вкладки.

Настройка панели статуса

Мы можем кастомизировать инфо-блоки в нижней информационной панели редактируя byobu-конфиг:

nano ~/.byobu/status

Пример настроек статусной панели:

# Tmux has one status line, with 2 halves for status
# Tmux отображает одну строку состояния разделенную на 2 части
tmux_left="logo #distro #release #arch #whoami #hostname session"

# You can have as many tmux right lines below here, and cycle through them using Shift-F5
# Вы можете настроить несколько правых строк и циклически перемещаться между ними с помощью Shift+F5
tmux_right="network #custom #entropy raid services #mail #users #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality processes load_average cpu_count cpu_freq memory swap disk disk_io uptime distro release updates_available reboot_required apport #whoami #hostname ip_address #time_utc date time"

tmux_right="network #custom #entropy raid reboot_required services #mail #users #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality processes load_average cpu_count cpu_freq memory swap disk disk_io uptime distro release updates_available apport #whoami #hostname ip_address #time_utc date time"

tmux_right="#network #custom #entropy raid reboot_required #services #mail #users #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality processes load_average cpu_count cpu_freq memory swap disk disk_io updates_available apport uptime distro release #whoami #hostname ip_address #time_utc date time"

# tmux_right="..."
# ... вы можете добавлять несколько конфигураций панелей
# ... и переключать их поочередно через Shift+F5

Моя конфигурация:

tmux_right="network #custom #entropy raid services #mail #users #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality processes load_average cpu_count cpu_freq memory swap disk disk_io uptime distro release updates_available reboot_required apport #whoami #hostname ip_address #time_utc date time"
## То же но без лишних опций:
tmux_right="network raid services processes load_average cpu_count cpu_freq memory swap disk disk_io uptime distro release updates_available reboot_required apport ip_address date time"

Примеры нижней панели:

[logo] [session name ][ открытые вкладки ] [proc] [load] [cpu x freq ] [ ram ] [ swap ] [ disk ] [disk_io][updades][ uptime ][ distro release ] [ ip ] [ дата и время на сервере ]

                     [Used %]                                [нужна перезагрузка]  



Информационные статус-панели byobu status notifications

Статус "updates_available" отображает количество обновлений 195! Если есть «обновления безопасности», то в конце будет !!. Можно проверить состояние обновлений так:

python3 /usr/lib/update-notifier/apt-check --human-readable


Доступные параметры/скрипты:
network
#custom
#entropy
raid
services
#mail
#users
#ec2_cost
#rcs_cost
#fan_speed
#cpu_temp
#battery
#wifi_quality
processes
load_average
cpu_count
cpu_freq
memory
swap
disk
disk_io
uptime
distro
release
updates_available
reboot_required
apport
#whoami
#hostname
ip_address
#time_utc
date time
Дефолтные конфигурации для Ubuntu 18.04:
#tmux_right="#network #disk_io #custom #entropy raid reboot_required updates_available #apport #services #mail #users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality #processes load_average cpu_count cpu_freq memory #swap disk #whoami #hostname #ip_address #time_utc date time"
#tmux_right="network #disk_io #custom entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost fan_speed cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk whoami hostname ip_address #time_utc date time"
#tmux_right="network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname ip_address #time_utc date time"
#tmux_right="#network disk_io #custom entropy #raid #reboot_required #updates_available #apport #services #mail #users #uptime #ec2_cost #rcs_cost fan_speed cpu_temp #battery #wifi_quality #processes #load_average #cpu_count #cpu_freq #memory #swap whoami hostname ip_address #time_utc disk date time"

Кастомные скрипты состояния

Добавьте в строку tmux_right параметр "custom", чтобы выводить свои статусы в панель с помощью статус-скриптов.

Кастомные скрипты состояния это любые исполняемые файлы в каталоге ~/.byobu/bin/:

ls -la $BYOBU_CONFIG_DIR/bin

Базовые скрипты:

ls -la /usr/lib/byobu/

Кастомный инфо-скрипт вывода реального IP с ежечасным обновлением:

nano ~/.byobu/bin/3600_real_ip.sh
chmod +x ~/.byobu/bin/3600_real_ip.sh
#!/bin/bash

. /usr/lib/byobu/include/dirs
. /usr/lib/byobu/include/shutil
. /usr/lib/byobu/ip_address

## @note Так можно вызывать другие статус-скрипты внутри custom byobu script
byobu_ip=$(__ip_address t 2> /dev/null)
real_ip=$(curl -s 2ip.fun)

[ $byobu_ip = $real_ip ] && exit 0;

if [ "$1" = "t" ]; then 
    printf "%s" "$real_ip"
else 
    color b w k; printf "%s" "$real_ip"; color --    
fi

## @note Обязательно выводите \n, иначе ничего не выведется в индикатор
echo

Название скрипта в формате «{N}_{NAME}», где N – частота обновления индикатора в секундах (не менее 5 сек), а NAME любое название.

Сценарий должен выводить небольшое количество текста в стандартный вывод. Ошибки не будут отображаться.

Чтобы реже запускать скрипт - увеличьте таймаут до 3 часов:

mv ~/.byobu/bin/3600_real_ip.sh ~/.byobu/bin/10800_real_ip.sh

Подробнее в документации byobu: https://www.byobu.org/documentation

#linux, #byobu, #terminal, #console, #byoby status notifications, #custom status script

категория: Shell