我正在运行一个数值模型,其参数位于“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+1之前,我不能等待作业n完成,因为每个作业都需要几天时间才能完成)
如何强制批处理等待提交作业n+1直到作业n运行?
我不确定如何创建一个until
循环来获取作业n的状态并等到它更改为“正在运行”,然后再提交作业n+1。我已经尝试了一些东西,但我使用的服务器还托管了另外 150 个人的工作,我担心过多的实验可能会产生一些问题......