Запустите 8 команд параллельно в выравниваемых панелях tmux.
У меня есть утилита мониторинга, состоящая из 8 отдельных утилит, предназначенных для мониторинга нескольких аспектов системы.
Все они работают по принципу htop: периодически перезаписывают экран, а не завершают работу после запуска.
Чтобы немного облегчить себе жизнь, я подумал, что было бы полезно создать сценарий, который я мог бы запускать на удаленном сервере, который открывал бы все эти команды в терминальном мультиплексоре каким-то разумным способом. панели одинакового размера (было бы неплохо, если бы расположение автоматически определялось в зависимости от размера терминала (т. е. 4x2 при просмотре в полноэкранном режиме на широкоэкранном мониторе, но это не обязательно).
По сути, я хочу иметь возможность запускать 8 разных команд одновременно на разных панелях одинакового размера в одном терминале. Я попытался использовать для этого tmux, используя аргумент разделенного окна, но это не позволяет мне одинакового размера панелей, поскольку они рекурсивны, и поэтому следующая панель всегда вдвое меньше предыдущей панели.
1 ответ
Наконец-то разобрался:
#!/bin/bash
# I'd love to add comments line by line but bash wont let me
tmux \
new-session \
'command 1'\; \
split-window \
'command 2'\; \
split-window -h \
'command 3'\; \
split-window \
'command 4'\; \
select-layout even-horizontal\; \
select-pane -t 0 \; \
split-window -v \
'command 5'\; \
select-pane -t 2 \; \
split-window -v \
'command 6'\; \
select-pane -t 4 \; \
split-window -v \
'command 7'\; \
select-pane -t 6 \; \
split-window -v \
'command 8'\; \
вот как это работает:
- создайте новый сеанс с помощью команды Command1
- создайте 3 новых разделенных окна с большим количеством команд
- измените порядок этих разделений в соответствии с равномерно-горизонтальным
- снова выберите первую панель
- разделите его пополам, на этот раз вертикально
- выберите второе окно, которое мы создали, которое из-за предыдущей команды теперь имеет индекс 2
- то же самое с шестым расколом
- и так далее