“/ bin / bash -l”无效选项

时间:2013-06-16 18:15:53

标签: bash

好吧,我正试图在我们的超级计算机上运行作为一个工作掩盖的串行MPI作业。主提交脚本基本上是这样的:

#!/bin/bash -l
#PBS -l nodes=4:ppn=8,walltime=24:00:00

cat $PBS_NODEFILE | uniq | tr '\\012' ' ' > tmp-$PBS_JOBID
read -a NODE < tmp-$PBS_JOBID
rm tmp-$PBS_JOBID

inode=-1
ijob=0

for ((K=1;K<=8;K++))
do
        [ $((ijob++ % 2)) -eq 0 ] && ((inode++))
        ssh ${NODE[inode]} _somepath_/RUN$K/sub.script &
done
wait
exit 0

每个sub.script看起来像:

#!/bin/bash -l
#PBS -l walltime=24:00:00,nodes=1:ppn=4

module load intel
module load ompi
export FORT_BUFFERED=1

*run executable* 

wait
exit 0

有时我会遇到每个sub.script的错误(作业立即死亡):

/bin/bash: -
: invalid option
Usage:  /bin/bash [GNU long option] [option] ...
        /bin/bash [GNU long option] [option] script-file ...
*etc.*

最有趣的是它是一个随机错误,这意味着如果我在第二个(或第三个等)时间运行相同的脚本,它将运行没有任何问题。有时我很幸运,有时我不是......删除-l将无济于事,因为在这种情况下模块无法加载,mpirun将无法正常工作。有任何建议如何修复它?

提前多多感谢!

2 个答案:

答案 0 :(得分:18)

您的脚本中可能包含您无法看到的字符。也许是使用错误的字符集翻译进行复制/粘贴或者是DOS格式。对于后者,您可以使用tofrodos或dos2unix包进行更正。

在任何一种情况下,您都可以在'vi'或其他应用程序中提取它,这些应用程序通常会显示奇怪的字符,如^ @或^ M.您可以尝试cat -v filename,这可能有助于看到这些奇怪的事情。推动尝试hexdump(或高清,或od)。

答案 1 :(得分:0)

我刚刚遇到了这个问题,并且行尾无效。我从CRLF更改为LF,然后将其修复!