bash - 从 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 的解决方案会更便携。
解决方案
就像是:
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之类的东西,虽然我没用过。
推荐阅读
- azure - 是否可以从 docker compose 卷中指定文件夹路径?
- sql - sql中的按位运算
- postgresql - psycopg2.errors.UndefinedColumn:列已排除。编号不存在
- video - 为用户跟踪和保存视频进度
- java - 当 Activity Swipe 上的 CardStackView 时如何停止适配器上的 MediaPlayer?
- c# - C# 控制台应用程序不会在其他人的计算机上运行
- html - How to Create Date Count timer selecting date from the date picker input and show the difference of selected date to current date
- laravel - Laravel - 如何将所有导入错误保存到表中
- python - 条形图中的颜色
- swagger - OpenAPI 3.0:C++ 服务器存根和客户端 SDK