首页 > 解决方案 > 从 bash 打开一个带有 x 个窗格的 tmux 窗口以并行运行任务

问题描述

我有一个使用并行命令同时推送多个构建的脚本。

通常,要么一切正常,要么什么都不做,但这不是一种非常可靠的方法。

脚本是这样的:

parallel ::: 'docker push a' 'docker push b' 'docker push c'

有没有办法,使用 bash 我可以创建一个命令数组,比如

commands = (docker push a' 'docker push b' 'docker push c')

然后打开一个 tmux 窗口,每个任务都有一个窗格,并在自己的窗格中运行每个任务?所以我会分别看到所有的输出。

在实践中,我在 MacOS 上使用 zsh,但符合 bash 的解决方案会更便携。

标签: bashtmux

解决方案


就像是:

for i in a b c; do
    if [ -z "$W" ]; then
        W=$(tmux neww -P "docker push $i")
    else
        tmux splitw -t$W "docker push $i" \; selectl tiled
    fi
done

remain-on-exit如果您不希望窗格在阅读输出之前关闭,您可能需要在窗口上设置该选项。

还有像https://github.com/greymd/tmux-xpanes之类的东西,虽然我没用过。


推荐阅读