"Неожиданный конец файла" и "ошибка импорта определения функции" ошибка запуска shellscript с помощью qsub
у меня есть следующий shellscript:
#!/bin/sh
cd /sw/local/bin/
export LD_LIBRARY_PATH=/sw/local/lib:/usr/local/Trolltech/Qt-4.7.2/lib:$LD_LIBRARY_PATH
./FeatureFinderRaw -in /homes/JG-C1-18.mzML -out /homes/test_remove_after_use.featureXML -threads 20
он отлично работает, когда я запускаю его из своей собственной командной строки, но когда я пытаюсь сделать:
qsub -q ningal.q -cwd -V -o /homes/queue.out -e /queue.err featureFind_C1-18_20t.sh
Я получаю следующую ошибку:
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `module'
./FeatureFinderRaw: error while loading shared libraries: libOpenMS.so: cannot open shared object file: No such file or directory
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `module'
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `module'
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory
/bin/bash: module: line 1: syntax error: unexpected end of file
/bin/bash: error importing function definition for `module'
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `module'
./FeatureFinderRaw: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `module'
Я не понимаю, почему я получаю эту ошибку при использовании qsub, но не при запуске скрипта на одном компьютере кластера. Как запустить скрипт с помощью qsub?
4 ответов
эта проблема в самом скрипте который использует
qsub -shell no -b yes -cwd -V somescript.bash arg1 arg2 etc
Если вы используете его для отправки другого сценария оболочки bash. Он производит annonying
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `BASH_FUNC_module'
(Это Sun Grid Engine 211.11, работающий на CentOS 6.6) оказывается, что все решается, просто помещая следующее поверх сценария обертки (а не обернутого сценария):
unset module
вот и все.
In/usr/share/Modules/init / bash прокомментировал строку "export-f module".
в обычной оболочке входа в систему, modules.sh будет вызываться из профиля.d Итак доступна команда модуля. В оболочка, как приложение wrapper script это просто источник вышеуказанного файла.
обычно в скрипте приложений после поиска выше файла они снова дают команду "загрузка модуля apps / vendor / app", что означает дополнительный поиск.
ссылка::- http://gridengine.org/pipermail/users/2011-November/002019.html
по какой-то неизвестной мне причине добавление точек с запятой в конце каждой строки исправило проблему.
наиболее вероятной причиной является то, что вы сохранили файл с окончаниями строк DOS (\r\n) вместо окончаний строк POSIX (\r), если добавление точек с запятой имеет значение.