Вложено, пока цикл в bash Сценарий для загрузки заданий Loadleveler работает неправильно?
#!/bin/bash
rm WAVECAR k_conv k_plot
#k convergence
for i in 2 4 6 8 9 10 11 12 13 14 15 16 ;
do
cat >KPOINTS <<!
pymatgen 4.7.6+ generated KPOINTS with grid density = 875 / atom
0
Monkhorst
$i $i $i
!
echo "k = $i" ;
b=$(llsubmit multiple.cmd) ;
c=$(echo $b | awk '{
ret=match($0,".in.")
rwt=match($0,"\" has")
rqt=rwt-(ret+4)
subs=substr($0,(ret+4),rqt)
print subs
}') ;
#c stores the job id
d=1 ;
until [ $d -eq 0 ]
do
b=$(llq $c) ; #llq is the command to query job information
d=$(echo $b | awk '{
if ($0 ~ /mm17s003/)
{print 1}
else
{print 0}
}')
done
E=$(tail -1 OSZICAR) ;
echo $i $E >> k_conv
done
awk '{print $1 "\t" $(NF-5)}' k_conv >> k_plot ; #Used to just write two specific columns from the file k_conv to k_plot.
Это файл скрипта, который я использую для отправки работ, который изменяет значение одного входного параметра в файле KPOINTS
перед отправкой работы каждый раз. for loop
для этого. multiple.cmd
фактический сценарий представления работы и llsubmit
команда отправки задания для loadleveler.
nested until loop
используется для запроса статуса задания для конкретной отправленной работы. Пока работа не закончена, этот цикл повторяется. Как только работа сделана и until loop
заканчивается, выходной файл, OSZICAR
генерируется. Awk используется для извлечения определенных строк, которые затем сохраняются в E. Наконец, переменная цикла for i
(т.е. входной параметр для расчета, который изменяет скрипт) и E
хранятся в файле k_conv
, Конец чего-либо for loop
,
По сути, из-за until loop
только одна работа должна быть представлена за один раз. Как только это будет сделано, следующий for loop
Начинается итерация и отправляется новая работа. Каким-то образом, когда я запускаю скрипт, для любых двух или трех случайных значений i
вакансии подаются одновременно. Я предполагаю, что есть некоторая проблема с until loop
,
Выход из llsubmit multiple.cmd
который изначально хранится в b: llsubmit: The job "c1hn1.virgo.iitm.ac.in.2077655" has been submitted.
с принимает идентификатор задания (2077655
из приведенного выше примера) в качестве его значения.
Выход из llq $c
это хранится в б позже: Id Owner Submitted ST PRI Class Running On ------------------------ ---------- ----------- -- --- ------------ ----------- c1hn1.2077655.0 mm17s003 9/9 23:43 I 50 Small 1 job step(s) in query, 1 waiting, 0 pending, 0 running, 0 held, 0 preempted
Любая помощь очень ценится.