App*_*ish 3 bash csh shebang qsub sungridengine
我想向我大学的 Sungrid 计算集群提交一个 bash 脚本,以循环运行可执行文件。当我登录服务器时,我处于 bash 中:
$ echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud)
我在传递给 qsub 的脚本顶部添加了一个 bash shebang:
$ cat shell_sub
#!/bin/bash
#$ -N bSS_s13
#$ -o logs/bSS_s13.log
#$ -j y
#$ -cwd
echo $SHELL > shell.txt
Run Code Online (Sandbox Code Playgroud)
但是当我提交上面的脚本时:
qsub shell_sub
Run Code Online (Sandbox Code Playgroud)
它而是在 csh 中执行:
$ cat shell.txt
/bin/csh
Run Code Online (Sandbox Code Playgroud)
如何强制 qsub 使用 bash 而不是 csh 执行我的脚本?
您的队列很可能配置为shell_start_mode并且posix_compliant定义shell列出为/bin/csh(这是默认值)。要检查这一点:
$ qconf -sq <name-of-queue> | grep shell\nshell /bin/bash\nshell_start_mode unix_behavior\nRun Code Online (Sandbox Code Playgroud)\n\n如果您不知道队列的名称,它可能是all.q。
shell_start_mode是posix_compliant,那么 shebang 行将被忽略,并且作业(如果它不是以二进制形式提交:)-b y将使用由shell ) 。\n\nshell_start_mode是unix_behavior,则使用 shebang 行来确定作业的 shell。您可以要求管理员考虑更改队列设置。
\n