Tmux за 5 минут
00:00 - Зачем?
Если для какой-то задачи надо одновременно отобразить несколько терминалов, особенно если вы работаете по SSH и не хотите прерывать сессию при отключении, тогда tmux - ваш выбор. Я расскажу как использовать утилиту из коробки со стандартными конфигами для самых распространённых на практике случаев.
00:15 - Когда это нужно?
Работа по SSH
Чаще всего требуется подключиться к серверу для диагностики, в одном окне запустить монитор ресурсов, в другом - смотреть логи, в третьем - править конфигурационный файл или выполнять какие-то команды. Плюшки от использования tmux на сервере:
- Требуется всего одна SSH-сессия. На сервере tmux создаст сколько угодно виртуальных терминалов.
- Сессия tmux не завершится, если возникнут проблемы с сетью. Соответственно, не завершатся выполняемые процессы и команды, а расположение виртуальных терминалов никак не изменится
Локальная работа
При использовании таких систем, как Terraform, Kubernetes, Ansible, OpenShift и т.п., удобно запускать в одном терминале команды, в другом отслеживать актуальное состояние системы, в третьем править конфигурационные файлы, в четвёртом - изучать документацию и т.д.
Запуск фоновых задач
Tmux можно использовать для запуска долгих скриптов или команд в фоновом режиме. Это может сэкономить время подготовки перед запуском, исключив пайпы и перенаправления.
Демонстрация экрана и параллельная работа
Поскольку сессия в tmux - это отдельный файл, доступ к ней можно открыть нескольким пользователям с правами на чтение или запись и демонстрировать свой "экран" или передать коллеге доступ.
Понты
Также можно удивить коллег своими навыками владения консолью и организовать дашборд с выхлопом различной информации вокруг основного терминала Тайлинг всегда выглядит впечатляюще :)
01:00 - Как поставить?
В зависимости от сценария использования, установку можно осуществить как на свою систему, так и на сервер, где вам потребуется несколько одновременно запущенных окон.
Linux
sudo apt install tmux
sudo yum intall tmux # OR sudo dnf install tmux
MacOS
Предварительно потребуется установить пакетный менеджер brew, после чего выполнить в терминале команду:
brew install tmux
Windows
Сначала потребуется установить WSL2 и какой-нибудь дистрибутив Linux, после чего в терминале выполнить соответствующую дистрибутиву команду для установки пакета (см. выше)
01:15 - Как запускать?
Запуск tmux довольно тривиален, достаточно в терминале ввести команду:
tmux
01:30 - Какая концепция?
Основные определения
- pane - виртуальный терминал
- layout - расположение виртуальных терминалов в окне
- window - экран, на котором отображаются виртуальные терминалы. Может быть активным (текущим окном) или фоновым (окном, которое вы не видите в данный момент)
- session - коллекция экранов и виртуальных терминалов. Сессий может быть несколько.
- prefix - начальная комбинация клавиш, позволяющая передавать tmux команды управления. По умолчанию, это сочетание
Ctrl+b
- Активный режим - когда tmux используется по прямому назначению, для работы с виртуальными теримналами
- Командный режим - управление tmux с помощью встроенных команд
- Фоновый режим - когда управление tmux производится аргументами командной строки
02:00 - Как работать?
Работа в активном режиме
- Разделить окно
Ctrl+b, %
- вертикальное разделение[|]
Ctrl+b, "
- горизонтальное разделение[—]
- Переключиться между терминалами
Ctrl+b, <arrow>
- переключиться с помощью стрелокCtrl+b, Ctrl+o
- переключаться по часовой стрелке - Изменить размеры терминала
Ctrl+b, Ctrl+<arrow>
- изменить размер активного терминала по горизонтали или вертикали с помощью стрелокCtrl+b, z
- развернуть терминал на всё окно. Повторная комбинация возвращает всё как былоCtrl+b, Space
- переключить layout автоматически. Удобно, когда нет сил двигать терминалы руками - Вывести список терминалов
Ctrl+b, w
- показать экран навигации
- Создать окно
Ctrl+b, c
- Создать новое окноCtrl+b, ,
- Переименовать окно - Переключиться между окнами
Ctrl+b, n
- переключиться на следующее окноCtrl+b, p
- переключиться на предыдущее окноCtrl+b, 0..9
- переключиться на окно 0 .. 9Ctrl+b, w
- показать экран навигацииCtrl+b, f
- поиск окна по имени - Закрыть окно
Ctrl+b, &
- убить текущее окно и терминалы в нём
Ctrl+b, $
- переименовать текущую сессиюCtrl+b, s
- переключиться в сессию из спискаCtrl+b, d
- отсоединиться от tmux обратно в консоль
Полезные штукиCtrl+b, [
- перейти в режим копирования. С помощью стрелок или PgUp, PgDn можно листать длинный выхлоп команд. Вернуться обратно - Ctrl+C
Ctrl+b, ?
- вывести справку с текущим описанием комбинаций клавиш
Работа в командном режиме
Ctrl+b, :
- переключиться в командный режим
set -g mouse on
- включить поддержку мыши. После этого между терминалами можно будет переключаться мышью, изменять их размер, а также прокручивать вывод.
Работа в фоновом режиме
tmux
- создать новую сессиюtmux new -s <name>
- создать новую сессию с заданным именемtmux ls
- вывести список сессийtmux a
- подключиться к последней активной сессииtmux a -t <name>
- подключиться к сессии с заданным именемtmux kill-session -t <name>
- завершить сессию с заданным именемtmux kill-server
- полностью завершить tmux
tmux new -d 'ping example.com'
- запустить сессию с командой ping в фоновом режиме
04:45 - Куда копать дальше?
Следующий шаг в работе с tmux - настройка его под себя. Создание своего конфига и автоматизация рутинных задач, настройка шаблонов и красивостей. Но это уже материал для самостоятельного изучения. Я лишь попытался описать часто используемые функции из коробки.
05:00 - Заключение
Я считаю tmux полезным и удобным инструментом для работы в консоли, но часто сталкиваюсь с мнением, что он очень сложен в настройке и изучении. В этом посте я постарался рассказать о базовом минимуме, которого должно хватить большинству пользователей, чтобы справляться с повседневными задачами и параллельно изучать возможности tmux глубже.