Sungridengine 如何使用qsub复制集群系统中的环境变量?

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

我使用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 /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
命令将环境变量手动加载到客户机中。它起作用了。