在均衡的 tmux 窗格中并行运行 8 个命令

在均衡的 tmux 窗格中并行运行 8 个命令

我有一个监控实用程序,它由 8 个单独的实用程序组成,用于监控系统的多个方面。
它们都像 htop 一样工作,因为它们会定期重写屏幕,而不是在运行后退出。

为了让我的生活更轻松一点,我认为创建一个可以在远程服务器上运行的脚本可能会很有用,该脚本会以某种合理的方式在终端多路复用器中以相同大小的窗格打开所有这些命令(如果可以根据终端大小自动确定堆叠就好了(例如,如果在宽屏显示器上全屏查看则为 4x2,但这不是必需的)。

基本上,我希望能够在单个终端中不同大小的窗格中同时运行 8 个不同的命令。我尝试使用 tmux 和 split-window 参数来实现这一点,但这不允许我均匀调整窗格的大小,因为它们是递归的,因此下一个窗格的大小始终是前一个窗格的一半

答案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
  • 与第六次拆分相同
  • 等等

相关内容