我需要在parralel作业的文件夹中运行脚本。
这是我的文件夹结构:
.
├── 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
运行一项作业。这是我想运行的一部分工作。我正在尝试将run/quo134*/quo1342-134217728*.sh
的内容作为ript并将其作为单独的作业运行,即,激活后,我将遍历文件夹中的每个脚本,但是整个作业将是由&
持有。这背后的原因是我大约有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
有没有一种方法可以运行不破坏此脚本的脚本
答案 0 :(得分:2)
您可以使用帮助功能来实现
Function run_folder {
local dir=$1 f=
cd $dir/run
# sequential execution
for f in */*.sh ; do
# Execute each test in it's folder.
(cd ${f%/*} && bash ${f##*/} -H)
done
}
# parallel execution
For j in * ; do
run_folder $j &
Done
wait