Я использую числовую модель, параметры которой находятся в файле «parameter.input». Я использую sbatch для отправки нескольких итераций модели, каждый раз меняя один параметр в файле параметров. Вот цикл, который я использую:
#!/bin/bash -l
for a in {01..30}
do
sed -i "s/control_[0-9][0-9]/control_${a}/g" parameter.input
sbatch --time=21-00:00:00 run_model.sh
sleep 60
done
Строка sed
изменяет параметр в файле параметров.
Файл run_model.sh
запускает модель.
Проблема: в зависимости от доступных ресурсов, задание может быть запущено немедленно или отложено на несколько часов. В моем цикле по умолчанию, если 60 секунд не достаточно для поиска ресурсов для выполнения задания n , файл параметров будет изменен, пока задание n находится в состоянии ожидания, то есть задание n будет работать с неверными параметрами. (и я не могу дождаться завершения задания n перед отправкой задания n + 1 , потому что для выполнения каждого задания требуется несколько дней)
Как заставить пакет дождаться отправки задания n + 1 , пока не будет запущено задание n ?
Я не уверен, как создать цикл until
, который бы захватывал статус задания n и ждал, пока он не изменится на «выполняется», перед отправкой задания n + 1, Я экспериментировал с несколькими вещами, но на сервере, на котором я работаю, работают еще 150 человек, и я боюсь, что слишком много экспериментов может создать некоторые проблемы ...