11

我有以下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

5 回答 5

11

在使用的包装脚本中也有这个问题

qsub -shell no -b yes -cwd -V somescript.bash arg1 arg2 etc

如果您使用它来提交另一个 bash shell 脚本。它产生了令人讨厌的

/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `BASH_FUNC_module'

(这是在 CentOS 6.6 上运行的 Sun Grid Engine 211.11)事实证明,只需将以下内容放在包装脚本(而不是包装脚本)的顶部即可解决问题:

unset module

就这样。

于 2014-11-25T15:30:14.513 回答
6

在 /usr/share/Modules/init/bash 中注释掉了 'export -f module' 行。

在普通的登录 shell 中,modules.sh 将从 profile.d 中调用,因此 module 命令可用。在非登录 shell 中,就像应用程序包装脚本一样,它只是首先获取上述文件。

通常在采购上述文件后的应用程序脚本中,他们再次给出命令“模块加载应用程序/供应商/应用程序”,这意味着额外的采购。

参考::- http://gridengine.org/pipermail/users/2011-November/002019.html

于 2012-07-20T10:37:19.743 回答
3

出于某种我不知道的原因,在每行末尾添加分号解决了这个问题。

于 2012-05-08T13:38:17.263 回答
1

将以下命令添加到 ~/.bash_profile 或 ~/.bashrc 文件,然后再次注销/登录。

unset module
或者简单的运行快速命令:
echo "unset module" >> ~/.bash_profile && source ~/.bash_profile
于 2019-01-09T02:29:46.940 回答
0

最可能的原因是如果添加分号会有所不同,那么您使用 DOS 行尾 (\r\n) 而不是 POSIX 行尾 (\r) 保存了文件。

于 2012-05-08T15:54:47.663 回答