SGE群集 - 提交后脚本失败 - 在终端中工作

时间:2016-09-19 17:05:54

标签: linux bash cluster-computing qsub sungridengine

我有一个脚本,我试图提交给SGE集群(在Redhat Linux上)。脚本的第一部分定义了完整CWD路径中的当前文件夹,作为要在下游使用的变量:

#!/usr/bin/bash
#
#$ -cwd
#$ -A username
#$ -M user@server
#$ -j y
#$ -m aes
#$ -N test
#$ -o test.log.txt

echo 'This is a test.'
result="${PWD##*/}"
echo $result

在bash中,这可以按预期工作:

CWD:

-bash-4.1$ pwd
/home/user/test

运行脚本:

-bash-4.1$ bash test.sh
This is a test.
test

当我将作业提交到群集时:

-bash-4.1$ qsub -V test.sh

并检查日志文件:

This is a test.
Missing }.

有谁知道提交作业的原因是什么" Missing}"什么时候从命令行工作?我不确定我在这里失踪了什么。

感谢。

1 个答案:

答案 0 :(得分:1)

批处理调度程序的posix标准要求他们忽略#!而是使用配置到集群中的shell或使用qsub的-S选项选择的shell。默认值通常是csh。因此,在脚本中添加#$ -S /usr/bin/bash之类的内容会导致它被bash解释。

或者,您可以说服群集管理员将队列从posix_compliant更改为unix_behavior。