Подача переменных среды через bsub (платформа LSF)

532
bers

Кажется, я не могу передать переменные среды в сценарии, переданные в планировщик кластера bsub. Это прекрасно работает, когда я отправляю команды, которые напрямую используют эти переменные среды, но эти переменные среды нельзя использовать в последующих сценариях. Почему это так и как я могу это исправить?

Вот простой пример, где я пытался перейти x=1на скрипт:

me@cluster:~[407]$ bsub -I -tty -env 'x=1' 'echo .$x.' Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35590315> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc0243>> .1.  me@cluster:~[408]$ echo 'echo .$x.' > myechox  me@cluster:~[409]$ more myechox echo .$x.  me@cluster:~[410]$ chmod +x myechox  me@cluster:~[411]$ bsub -I -tty -env 'x=1' myechox Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35590318> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc1279>> ..  me@cluster:~[412]$ bsub -I -tty -env 'x=1' 'export x;myechox' Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35590340> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc1045>> .. 

Обновление : это работает:

me@cluster:~[456]$ bsub -I -tty -env 'x=1' 'export x=$x;myechox' Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35609253> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc0975>> .1. 

Между тем, я также узнал, что bsubпредпочитает использовать bsub < scriptfileвместо bsub scriptfile; По-видимому, это необходимо для того, чтобы включить синтаксический анализ встроенных параметров (используя #BSUB), а также объясняет, почему переменные устанавливаются только локально (поскольку не требуется вызывать под-сценарий).

Тем не менее, теперь я тоже попробовал это, что, на удивление, не работает:

me@cluster:~[457]$ bsub -I -tty -env 'x=1' < myechox Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35609459> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc1140>> .. 

Обновление 2 : сначала я попробовал exporting x, что дает тот же эффект, что и при использовании -env 'x=1':

me@cluster:~[458]$ export x=1  me@cluster:~[460]$ bsub -I -tty 'echo .$x.' Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35610151> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc1140>> .1.  me@cluster:~[459]$ bsub -I -tty < myechox Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35609990> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc1140>> .. 

Обновление 3 : это, опять же, работает, что я считаю ответом на мой вопрос:

me@cluster:~[571]$ (echo export x=$x && cat myechox) | bsub -I -tty Info: No jobname given, set to: Job_with_no_name Info: No output file given, set to: output_%J_%I.txt Info: No memory limit given, set to: 512MB Info: No runtime limit given, set to: 15min Job <35641024> is submitted to queue <normal>. <<Waiting for dispatch ...>> <<Starting on linuxbmc1045>> .1. 
0
Вы пытаетесь установить: экспорт x = 1, а затем выполнить сценарий? Romeo Ninov 7 лет назад 0
@RomeoNinov: еще лучше: я пробовал `export x = $ x; myechox`, и это тоже работает. Интересно, если это будет сделано так ... bers 7 лет назад 0
Bers, да, если вы экспортируете переменную в оболочке, она заполняется во всех экземплярах подоболочки, которые вы запускаете после экспорта (это ИМХО, что вам нужно :)) Romeo Ninov 7 лет назад 0
@RomeoNinov Ладно, понятно. Тем временем я обнаружил, что bsub предпочитает использовать с `bsub <scriptfile` вместо` bsub scriptfile`; По-видимому, это необходимо для включения анализа встроенных параметров (с использованием `# BSUB`). Так что пока мне нужен мой вопрос, оригинальный вопрос все еще стоит, к сожалению;) bers 7 лет назад 0

0 ответов на вопрос