2014-10-09 7 views
0

Я пытаюсь написать массив заданий, чтобы отдельные задания начинались в несколько разных точках времени. (Потому что программа, которую я пробуждаю использует время суток с точностью до секунды, как случайный начальная и он будет генерировать идентичные результаты, если все задания представляются в то же время.)Отложенное выполнение PBS с массивом заданий

Вот директивы я использую:

#!/bin/bash 
#PBS -N test 
#PBS -t 1-10     # Job array 
#PBS -a hhmm.ss    # Deferred execution 

echo Time is `date` >> test.out 

Но я хотел бы, чтобы -a был удален. Я подумывал написать небольшую подпрограмму, которая выводит случайные числа в этом формате и подает их на -a, но я не знаю, как сделать вариант, что -a принимает переменную.

Решения по любой другой линии приветствуются, единственными требованиями являются то, что задания в массиве заданий начинаются с интервалов времени.

Надеюсь, это имеет смысл, если нет, я с удовольствием проясню.

+0

Вы можете заставить одно из заданий выполнить одно и то же время, изменив #PBS -t 1-10 на #PBS -t 1-10% 1, если это TORQUE 2.4 или выше. Если вы можете отредактировать программу, я бы настоятельно предложил использовать другое случайное семя, так как есть намного лучшие способы сделать это. – dbeer

ответ

0
#!/bin/bash 
#PBS -N test 
#PBS -t 1-10     # Job array 

sleep `expr $RANDOM % 60`  
echo Time is `date` >> test.out 

Друг предложил использовать wait или sleep в начале скрипта, чтобы заставить работу ждать, прежде чем снова начать. Этот expr $ RANDOM% 60 помещает их в считанные секунды (менее 60). Обратите внимание, что вам больше не нужно откладывать выполнение (нет директивы -a).