2016-10-14 3 views
0

Я использую вычислительный кластер моего отдела с Sun Grid Engine.несколько команд qsub одновременно

Когда мне нужно запускать несколько заданий R, Обычно я пишу файлы сценария оболочки с именами s01.sh, s02.sh, ..., s50.sh, которые имеют «R CMD BATCH r01.r», «R CMD BATCH r02.r ', ...,' R CMD BATCH r50.r 'в качестве его содержимого.

Затем я открываю «PUTTY», войдите в систему, а затем должен ввести «qsub s01.sh», «qsub s02.sh» и т. Д.

Если есть сотни рабочих мест, это настоящая работа, чтобы вручную ввести сотни рабочих мест. Есть ли способ запустить несколько команд «qsub» одновременно?

ответ

1

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

Вам просто нужен цикл.

Предполагая, что вы уже создали r*.r файлы, это легко сделать с помощью небольшого скрипта:

#!/bin/bash 

for file in r*.r ; do 
    script=$(echo $file | sed 's/^r/s/;s/\.r$/.sh/') 
    ( 
     echo "#/bin/sh" 
     echo "R CMD BATCH $file" 
    ) > $script 
    chmod +x $script 
    qsub $script 
done 
+0

Спасибо, но я все еще ничего не понимаю. Итак, должен ли я вводить код напрямую, или должен ли я сделать файл blahblah.sh и содержать ваш код в .sh-файле? – user67275

+0

@ user67275: Последнее намного проще. Создайте скрипт, называемый 'submit-jobs.sh', содержащий команды, которые я написал, запустите' chmod + x submit-jobs.sh', затем запустите скрипт. (Обратите внимание, что я не тестировал его, у меня нет 'qsub' в моей системе.) –

1

Я предполагаю, что сценарии для запуска в текущей папке.

for file in s*.sh; do; qsub $file; done 
Смежные вопросы