Я запускаю большую работу на HPC. Но установленные программы для работы — старые версии, а новые версии у меня в домашнем каталоге. Я могу войти в любой узел, экспортировать путь к новым версиям с помощью export PATH=/home/bharat/scratch/bin/:$PATH
. Однако я не уверен, что если я экспортирую путь в своей оболочке входа и отправлю работу с помощью bsub
, то будет ли новый экспортированный путь использоваться всеми узлами, которые запускают работу.
Я могу скопировать эти файлы в один из каталогов include по умолчанию, но мой системный администратор не горит желанием сделать это за меня в ближайшее время..
Каков наилучший способ теперь экспортировать путь ко всем узлам? Могу ли я написать скрипт оболочки с командой export + командой job и передать этот скрипт в bsub?
решение1
Каков наилучший способ теперь экспортировать путь ко всем узлам? Могу ли я написать скрипт оболочки с командой export + командой job и передать этот скрипт в bsub?
Да. Напишите скрипт (скажем, назовите его myscript
), который одновременно устанавливает PATH и запускает вашу программу. Затем отправьте задание с помощью командной строки bsub myscript
. Будет использоваться ваша локальная установка, а не системная.
Еще более простой вариант: LSF установит переменные среды отправки в среду выполнения, включая PATH.
[mclosson@hostA ~]$ echo $PATH
/lsf/9.1/linux2.6-glibc2.3-x86_64/etc:/lsf/9.1/linux2.6-glibc2.3-x86_64/bin:/bin:/usr/bin
[mclosson@hostA ~]$ bsub -m hostB -Is 'echo $PATH'
Job <217> is submitted to default queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on hostB>>
/lsf/9.1/linux2.6-glibc2.3-x86_64/bin:/lsf/9.1/linux2.6-glibc2.3-x86_64/etc:/bin:/usr/bin
Теперь обновите свой путь так, чтобы он включал локальную установку вашей программы.
[mclosson@hostA ~]$ export PATH=/tmp/xxx:$PATH
[mclosson@hostA ~]$ bsub -m hostB -Is 'echo $PATH'
Job <218> is submitted to default queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on hostB>>
/lsf/9.1/linux2.6-glibc2.3-x86_64/bin:/tmp/xxx:/lsf/9.1/linux2.6-glibc2.3-x86_64/etc:/bin:/usr/bin