2013-03-11 1 views
0

Мне нужно отправить несколько симуляций кондору (сетке выполнения нескольких клиентов) с использованием оболочки, и поскольку это может занять некоторое время, я решил написать сценарий оболочки, чтобы сделать это для меня. Я новичок в языке сценариев командной оболочки, и это является результатом того, что я сделал на один день:Использовать вывод оболочки для обработки ошибок для кондора

for H in {0..50} 
do 
    for S in {0..10} 
    do 
     ./p32 -data ../data.txt -out ../result -position $S -group $H 
     echo "> Ready to submit" 
     condor_submit profile.sub 
     echo "> Waiting 15 minutes for group $H Pos $S" 
     for W in {1..15} 
     do 
      echo "Staring minute $W" 
      sleep 60 
     done 
    done 

    echo "Deleting data_3 to free up space" 
    mkdir /tmp/data_3 
    if [$H < 10] 
     then 
      tar cfvz /tmp/data_3/group_000$H.tar.gz ../result/data_3/group_000$H 
      rm -r ../result/data_3/group_000$H 
     else 
      tar cfvz /tmp/data_3/group_00$H.tar.gz ../result/data_3/group_00$H 
      rm -r ../result/data_3/group_00$H 
    fi 
done 

Этот сценарий проходит через 0..50 моделирования и подает 0..10 различные параметры программы, которая генерирует профиль представления кондора. Затем я отправляю этот профиль и позволяю ему исполнять в течение 15 минут (каждый раз, когда вы делаете вызов, убедитесь, что труба SSH не сломается). По истечении 15 минут я сжимаю вывод на том с большим объемом и стираю исходные файлы.

Причина, по которой я реализую это, потому что наша кондорская система может обрабатывать до 10 000 представлений сразу, а одна подача (condor_submit profile.sub) выполняет 7000+ симуляций.

Теперь моя проблема с этой линией. Когда я проверил это утро, я (к счастью) заметил, что при вызове condor_submit profile.sub может возникнуть ошибка, если сеть слишком занята. Код ошибки:

ERROR: Failed to connect to local queue manager 
CEDAR:6001:Failed to connect to <IP_NUMBER:PORT_NUMBER> 

Это означает, что время от времени теряется вся итерация! Как я могу обойти это? Единственный способ, которым я вижу использовать оболочку для чтения в последней строке/с терминала вывода и оценки того, будут ли они ожидаемый т.е. ответа:

7392 job(s) submitted to cluster CLUSTER_NUMBER. 

Но как бы я прочитал в последней строке и идти о проверке за ошибки?

Любой помощь очень нужны и очень высоко ценится

ответ

0

condor_submit Придает ли ненулевой код выхода, когда он терпит неудачу? Если да, то вы можете попробовать вызвать его так:

while ! condor_submit profile.sub; do 
    sleep 5 
done 

который заставит текущий профиль, который будет представлен через каждые 5 секунд, пока не удается.

+0

Это выглядит очень перспективно! И, похоже, работает! Спасибо за быстрый ответ :) –

 Смежные вопросы

  • Нет связанных вопросов^_^