依次运行多个bash脚本

时间:2019-10-23 15:35:38

标签: linux bash shell sh

对不起,如果已经问过这个问题。我根本无法找出合适的词汇来搜索。我需要在GPU集群中运行多个实验。但是目前,我开始一项工作,然后等待其完成再启动另一项工作。如何“给命令”以顺序运行所有脚本?我有类似以下内容:

./experiment.sh configs/job1.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>

对于<gpu-ID>,我将01放在特定的GPU上

现在我开始工作,说:

./experiment.sh configs/job1.sh --train <gpu-ID>

并定期检查它是否完成,以便我可以开始job2

什么是更有效的自动化方法?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用双重安培架:script1 && script2 && script3

在此示例中,script2将在script1结束时执行,只有script1返回0,即不会失败

答案 1 :(得分:1)

如果任务出现在脚本中,您将按顺序运行:

$ cat all_jobs
./experiment.sh configs/job1.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>
./experiment.sh configs/job2.sh --train <gpu-ID>
$ sh all_jobs  # Runs job1, then run job2, then run job 3

如果要从单个命令行运行它们,请用;分隔它们:

$ ./experiment.sh configs/job1.sh --train <gpu-ID>; ./experiment.sh configs/job1.sh --train <gpu-ID>; ./experiment.sh configs/job1.sh --train <gpu-ID>;