У меня есть необходимость запускать скрипты в папках и паролел заданий.
Вот как выглядит структура моей папки:
.
├── quo1374
├── quo2147
├── quo1407
......
├── quo1342
│ ├── dist
│ │ └── v0.1.0-alpha
│ │ └── unix
│ │ └── mjolnir
│ ├── examples
│ │ ├── values-local-134217728-m4.2xlarge.yaml
│ │
│ ├── remote_script.sh
│ └── run
│ ├── quo1342-134217728-m4.2xlarge
│ │ ├── quo1342-134217728-m4.2xlarge
│ │ └── quo1342-134217728-m4.2xlarge.sh
│ ├── quo1342-134217728-m4.xlarge
│ │ ├── quo1342-134217728-m4.xlarge
│ │ └── quo1342-134217728-m4.xlarge.sh
│ ├── quo1342-134217728-m5.12xlarge
│ │ ├── quo1342-134217728-m5.12xlarge
│ │ └── quo1342-134217728-m5.12xlarge.sh
│ ├── quo1342-134217728-m5.16xlarge
│ │ ├── quo1342-134217728-m5.16xlarge
│ │ └── quo1342-134217728-m5.16xlarge.sh
│ ├── quo1342-134217728-m5.24xlarge
│ │ ├── quo1342-134217728-m5.24xlarge
│ │ └── quo1342-134217728-m5.24xlarge.sh
│ ├── quo1342-134217728-m5.4xlarge
│ │ ├── quo1342-134217728-m5.4xlarge
│ │ └── quo1342-134217728-m5.4xlarge.sh
│ ├── quo1342-134217728-m5.8xlarge
│ │ ├── quo1342-134217728-m5.8xlarge
│ │ └── quo1342-134217728-m5.8xlarge.sh
│ ├── quo1342-134217728-m5.metal
│ │ ├── quo1342-134217728-m5.metal
│ │ └── quo1342-134217728-m5.metal.sh
│ ├── quo1342-134217728-t2.2xlarge
│ │ ├── quo1342-134217728-t2.2xlarge
│ │ └── quo1342-134217728-t2.2xlarge.sh
│ ├── quo1342-134217728-t3a.2xlarge
│ │ ├── quo1342-134217728-t3a.2xlarge
│ │ └── quo1342-134217728-t3a.2xlarge.sh
│ └── quo1342-134217728-t3a.xlarge
│ ├── quo1342-134217728-t3a.xlarge
│ └── quo1342-134217728-t3a.xlarge.sh
Например, скрипт └── quo1342-134217728-m4.2xlarge.sh
запускает одно задание. Это подмножество работ, которые я хотел бы выполнить. Я пытаюсь придумать как ript, который будет брать содержимое run/quo134*/quo1342-134217728*.sh
и запускать его как отдельное задание, т. Е. При активации я буду перебирать каждый из сценариев в папке, но вся работа будет выполняться&
. Причина в том, что у меня есть около 12 отдельных папок, которые выглядят так. Я хотел бы запустить их параллельно. однако важно, чтобы скрипты внутри папок запускались последовательно.
Вот попытка того, что я пытаюсь сделать. Хотя это не работает, я надеюсь, что это внесет ясность в мой вопрос.
for f in *
do cd $f/run
for f in *.sh
bash "$f" -H &
cd ..
done
done
Буду признателен за любые указатели по этому вопросу.
Обновление
Ответы dash-o помогло, но привело к другой проблеме. Скрипты bash используют относительные пути, например .. quo1342-134217728-t3a.xlarge.sh содержит ссылки типа
../../dist/v0.1.0-alpha/unix/mjolnir
, когда я использую ваш скрипт, он запускается, но кажется, что выполнение не учитывает путь к файлув скрипте то есть
ssh: Could not resolve hostname : Name or service not known + ../../dist/v0.1.0-alpha/unix/mjolnir destroy ../../examples/values-local-549755813888-t3a.xlarge.yaml
Есть ли способ запустить скрипт, который не нарушает это