Последовательный запуск нескольких скриптов bash - PullRequest
0 голосов
/ 23 октября 2019

извините, если этот вопрос уже задавался. Я просто не мог найти правильный словарный запас для его поиска. У меня есть несколько экспериментов, которые мне нужно запустить в кластере с графическим процессором. Но сейчас я начинаю одну работу и жду, пока она не закончится, прежде чем запустить другую. Что я могу сделать, чтобы «дать команду», чтобы запустить все сценарии последовательно? У меня есть что-то вроде следующего:

./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> Я положил 0 или 1 для конкретных графических процессоров

Прямо сейчас я начинаю работу сказать:

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

И периодически проверяйте, закончил ли он, чтобы я мог запустить job2.

Какой более эффективный способ автоматизировать это?

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Что у вас есть будет запускать задания последовательно, если они появятся в скрипте:

$ 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>;
1 голос
/ 23 октября 2019

Да, вы можете использовать двойные амперстенды: script1 && script2 && script3

В этом примере script2 будет выполнено, когда script1 закончится, только если script1 вернет 0, то есть не потерпит неудачу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...