откройте окно tmux с панелями x для параллельного запуска задач от bash - PullRequest
0 голосов
/ 06 марта 2020

У меня есть скрипт, который запускает несколько сборок одновременно, используя параллельную команду.

Обычно либо все работает, либо ничего, но это не очень надежный способ сделать это.

скрипт выглядит так:

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

Есть ли способ, используя bash, где я мог бы создать массив команд, например

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

, а затем открыть окно tmux с панелью на задачу и запускать каждую задачу на своей панели? поэтому я бы видел все выходы отдельно.

На практике я использую zsh на MacOS, но совместимое с bash решение было бы более переносимым.

1 Ответ

1 голос
/ 06 марта 2020

Что-то вроде:

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, хотя я не использовал его.

...