Я пытаюсь написать скрипт bash, который выполняет следующие действия:
- открыть 8 терминалов Tmux
- каждый из терминалов подключается в SSH к удаленному серверу
- запустить скрипт X на 3 сервере, и когда это будет сделано
- запустить другой скрипт Y на 3 разных серверах
Операции (особенно последние две) должны выполняться в этом точном порядке. Мне удалось создать все терминалы tmux, но я вижу, что по некоторым причинам tmux настолько быстро выполняет команды, что не ожидает завершения команды.
Например, просто написать:
tmux send-keys -t 0 "ls" В скрипте не всегда выдают полный список файлов, содержащихся в домашней папке.
То же самое происходит с двумя сценариями на разных серверах, иногда он выполняет Y до X.
Это мой сценарий:
###################################### # Setup tmux ###################################### tmux new-session -d -s sss tmux new-window -t sss for (( i = 0; i < 3; i++ )); do tmux split tmux select-layout even-vertical done for (( i = 0; i < 8; i=i+2 )); do tmux select-pane -t $i tmux split-window -h done ###################################### ###################################### # Ssh Connection ###################################### for (( i = 0; i < 8; i++ )); do tmux send-keys -t $i "$connection $" C-m done ###################################### for (( i = 0; i < 3; i++ )); do tmux send-keys -t $i "cd scripts" C-m tmux send-keys -t $i "./X.sh" C-m done for (( i = 3; i < 6; i++ )); do tmux send-keys -t $i "cd scripts" C-m tmux send-keys -t $i "./Y.sh $-3]}" C-m done Обновить
Кроме того, как я могу ждать завершения команды в той же панели tmux? Как делать что-то еще только после выполнения длинной команды
Заранее спасибо.
Спасибо! Я попробую ваше предложение, как только смогу. В то же время я начинаю думать, что мне действительно не нужен tmux ... В двух словах мне нужно отправить несколько команд на различные удаленные серверы для измерения производительности, дождаться завершения работы каждой машины и выпустить новый набор экспериментов. Любое предложение о лучшем способе сделать это?