Я знал о tmux уже некоторое время, но продолжал работать с ним. В последнее время я начал смотреть на Processor API, доступный в Kafka . Открыв 4-5 окон терминала (Zookeeper, Kafka, посылая сообщения, получая сообщения) и переключившись между ними, я быстро понял, что мне нужен способ открыть эти терминальные сессии одновременно и централизовать их. У меня был идеальный вариант использования tmux! Этот пост о сценариях tmux для экономии времени во время разработки, в данном случае работы с kafka.
В этом посте мы предполагаем, что читатель уже знаком с zookeeper и kafka.
Получение Tmux
Прежде чем мы начнем, полезно знать, как мы можем установить tmux. Tmux можно скачать с основного сайта. В моем случае я использую Mac, поэтому я использовал homebrew — brew install tmux
.
Скриптинг Tmux
Я хотел сценарий для создания следующего рабочего пространства:
- Zookeeper работает на собственной панели.
- Сервер Kafka работает на собственной панели.
- Отдельная панель для отправки сообщений.
- Отдельная панель для приема сообщений.
- Наконец, панель для запуска кода моего кафки-процессора или выполнения специальных задач.
Я хотел, чтобы zookeeper и kafka запускались автоматически, производитель сообщений и потребитель, которых я остановил бы и начал по мере необходимости. Но я бы хотел, чтобы каждая соответствующая панель переписывалась в каталог базовой установки kafka. Как только я нашел соответствующие команды tmux, это было легко настроить. Вот сценарий:
#!/bin/sh
KAFKA_DIR=/usr/local/kafka_2.11-0.9.0.0-SNAPSHOT
START_ZK="./bin/zookeeper-server-start.sh"
ZK_PROPS="config/zookeeper.properties"
START_KAFKA="./bin/kafka-server-start.sh"
KAFKA_PROPS="config/server.properties"
tmux new-session -s kafka-work -d
#split screen in have horizontally
tmux split-window -v
#split the second half in half again
tmux split-window -v
#split the top window in half vertically
tmux split-window -h -t 0
#split the new half top window in half horizontally
tmux split-window -v
#cd into kafka directory
tmux send-keys -t 1 "cd $KAFKA_DIR" C-m
#start zookeeper
tmux send-keys -t 1 "$START_ZK $ZK_PROPS" C-m
tmux send-keys -t 2 "cd $KAFKA_DIR" C-m
tmux send-keys -t 2 "$START_KAFKA $KAFKA_PROPS" C-m
tmux send-keys -t 3 "cd $KAFKA_DIR" C-m
tmux send-keys -t 4 "cd $KAFKA_DIR" C-m
tmux attach -t kafka-work
Хотя подробное описание tmux выходит за рамки этого поста, будет полезно дать краткое описание команд tmux в сценарии.
Разделение панелей
В сценарии есть несколько split-window
команд, и они делают то, что вы ожидаете, разбивая окно по горизонтали или по вертикали. Что не так очевидно, так это то, split-window -v
что окно разбивается по горизонтали и split-window -h
разбивается по вертикали . Tmux видит получающиеся панели иначе, чем мы, люди. Когда окно разделено по горизонтали, две панели накладываются друг на друга по вертикали, а для разделения по вертикали панели располагаются горизонтально рядом друг с другом. Есть одно последнее замечание о разбивке окна на панели, которое необходимо упомянуть. Когдаsplit-window
выдается команда, курсор попадает в последнюю созданную панель. Это важно иметь в виду, если вы собираетесь вводить дополнительные команды, но не хотите, чтобы они выполнялись на только что созданной панели.
Номера панелей
По умолчанию tmux нумерует панели в данном окне, начиная с 0. Если начальное окно разделено на две панели по горизонтали, верхняя панель по-прежнему равна 0, а нижняя половина — теперь номер 1. Хотя это кажется очень естественным, когда дополнительные панели разбиты по разным областям, нумерация может показаться запутанной. Просто имейте в виду, что панели нумеруются в порядке создания.
Отправка команд на панели
Наконец, у нас есть send-keys -t N <some command>
команды в сценарии. Это так, что мы можем нацелить на конкретную панель с помощью данной команды. В нашем случае мы хотим, чтобы 4 наши панели находились в каталоге базовой установки kakfa, поэтому мы запускаем tmux send-keys -t N "cd $KAFKA_DIR" C-m
команду. Существует 4 таких команды, каждая с определенной целевой панелью 1-4. Мы хотим запустить zookeeper на панели 1, чтобы tmux send-keys -t 1 "$START_ZK $ZK_PROPS" C-m
команда использовалась. Чтобы запустить сервер kafka, мы запускаем очень похожую команду, за исключением того, что панель 2 является целевой.
Финал Tmux — Кафка Результаты
Вот снимок экрана с окончательными результатами запуска скрипта kafka-tmux. Цифры на панелях приведены только для иллюстрации.
Вывод
Это был быстрый тур по Tmux. Он ужасно неполный и лишь поверхностно рассказывает о том, что мы можем сделать с tmux и как его можно настроить. Я просто хотел поделиться своим сценарием на случай, если кто-то найдет его полезным. Спасибо за ваше время.