Sungridengine 如何使用qsub复制集群系统中的环境变量?
我使用SUN的SGE将作业提交到集群系统中。问题是如何让 计算机器在主机中查找环境变量,或者如何配置Sungridengine 如何使用qsub复制集群系统中的环境变量?,sungridengine,qsub,Sungridengine,Qsub,我使用SUN的SGE将作业提交到集群系统中。问题是如何让 计算机器在主机中查找环境变量,或者如何配置qsub脚本使计算机器在主机中加载环境变量? 下面是一个脚本示例,但会显示一些错误,例如找不到库: #!/bin/bash # #$ -V #$ -cwd #$ -j y #$ -o /home/user/jobs_log/$JOB_ID.out #$ -e /home/user/jobs_log/$JOB_ID.err #$ -S
qsub
脚本使计算机器在主机中加载环境变量?
下面是一个脚本示例,但会显示一些错误,例如找不到库:
#!/bin/bash
#
#$ -V
#$ -cwd
#$ -j y
#$ -o /home/user/jobs_log/$JOB_ID.out
#$ -e /home/user/jobs_log/$JOB_ID.err
#$ -S /bin/bash
#
echo "Starting job: $SGE_TASK_ID"
# Modify this to use the path to matlab for your system
/home/user/Matlab/bin/matlab -nojvm -nodisplay -r matlab_job
echo "Done with job: $SGE_TASK_ID"
您正在使用的技术(添加a-V)应该有效。使用-S指定shell的一种可能性是,网格引擎被配置为作为登录shell启动/bin/bash,并且您的配置文件脚本在您试图传递给作业的整个环境中都在跺脚 在作业排队/运行时,尝试在作业上使用
qstat-xml-j
,查看网格引擎试图传递给作业的环境变量
尝试向脚本添加env
命令,查看设置了哪些变量
尝试添加shopt-q登录shell;echo$?
在脚本中告诉您它是否作为登录shell运行
要列出在网格引擎中配置为登录shell的shell,请尝试:
SGE_SINGLE_LINE=true qconf -sconf|grep ^login_shells
我认为这个问题是因为您没有在SGE的登录shell中配置BASH 通过
qconf-sconf
检查您的登录shell,并查看bash是否在其中
登录shell
UNIX命令解释器,如BourneShell(参见sh(1))或C-
网格引擎可以使用Shell(参见csh(1))来启动作业脚本。这个
命令解释器可以作为登录shell启动(即所有
系统和用户的默认资源文件(如.login或.profile)将被删除
在命令解释器启动且环境
对于作业,将设置为用户刚刚登录)或
用于命令执行(即仅限特定于shell的资源文件,如
.cshrc将被执行,并由
网格引擎-参见qsub(1))。参数login_shell包含
命令inter的可执行名称的逗号分隔列表-
要作为登录shell启动的前置程序。此列表中的壳仅为
如果参数shell\u start\u mode(见上文),则作为登录shell启动
设置为posix_兼容
Changes to login_shells will take immediate effect. The default for
login_shells is sh,csh,tcsh,ksh.
This value is a global configuration parameter only. It cannot be over-
written by the execution host local configuration.
谢谢,先生。我已经解决了这个问题。我使用
export
命令将环境变量手动加载到客户机中。它起作用了。