Я пытаюсь запустить 2 скрипта в 2 разных панелях TMUX из файла Bash. Проблема заключается в том, что все они блокируются, поэтому, как только я выполняю процесс из одной панели, я не могу перейти на другую панель для выполнения другой задачи.

Как я могу преодолеть эту проблему?

Я выложу пример кода.

#! /bin/bash
tmux split-window -v
tmux select-pane -t 0
./blocking_script_1
tmux select-pane -t 1 #doesnt happen
./blocking-script_2  #doesnt happen

Спасибо

Liam

1 ответ1

0

Это должно делать то, что вы хотите.

#!/bin/bash
tmux split-window -v
tmux send-keys -t 0 ./blocking_script_1 C-m
./blocking-script_2

Вместо того, чтобы переключать панели и затем запускать blocking_script_1, он просто отправляет нажатия клавиш, необходимые для его выполнения, с последующим возвратом каретки (Ctrl-M. Aka Enter или C-m). Затем он запускает blocking_script_2 в текущей панели (которая не изменилась, все еще панель -t1)

Если вам нужно предоставить какие-либо аргументы для blocking_script_1, оберните всю команду и все ее аргументы в двойные кавычки или используйте \ для выхода из пробелов. например

tmux send-keys -t 0 "./blocking_script_1 arg1 arg2 arg3..." C-m

или же

tmux send-keys -t 0 ./blocking_script_1\ arg1\ arg2\ arg3... C-m

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .