我正在尝试在使用 Lustre 文件系统的 RHEL5 集群上运行大量批处理作业。我在大约 1% 的工作中遇到了一个奇怪的错误:他们找不到他们都用于转向的文本文件。重现错误的脚本如下所示:
#!/usr/bin/env bash
#PBS -t 1-18792
#PBS -l mem=4gb,walltime=30:00
#PBS -l nodes=1:ppn=1
#PBS -q hep
#PBS -o output/fit/out.txt
#PBS -e output/fit/error.txt
cd $PBS_O_WORKDIR
mkdir -p output/fit
echo 'submitted from: ' $PBS_O_WORKDIR
files=($(ls ./*.txt | sort)) # <-- NOTE THIS LINE
cat batch/fits/fit-paths.txt
对于一小部分作业,错误流输出将显示:
cat: batch/fits/fit-paths.txt: No such file or directory
很奇怪,但它变得更奇怪了。
当我将files=($(ls ./*.txt | sort))
线路更改为
files=($(ls batch/fits/*.txt | sort))
作业运行没有错误!不用说,这远远不能令人满意:我宁愿我的工作不依赖于黑魔法(尽管黑魔法总比没有魔法好)。
知道这里发生了什么吗?