我正在尝试在Linux集群上运行模拟。在我的主目录中的头节点上我有
/home/checkouts (contains the executable of the model)
和
/home/models/run (contains the input files for the model)
在模拟过程中,我将输出数据保存在本地节点上,最后我想将输出文件复制到/ home / models / output / run。我得到的是像这样的无限循环的输出/运行/运行文件夹
/home/models/output/run/run/output/run/run/output/run/run/output/run/run ...
有人知道我犯了哪个错误吗?我使用以下sh脚本来运行模型:
rundir=$PWD
outputdir=/home/models/output
run=$(basename $rundir) # run
cp -r $rundir /var/tmp/$run
pushd /var/tmp/$run
mpirun -np $NO_OF_CORES -machinefile nodes ~/checkouts/x_model-v1.21.$
popd
cp -r /var/tmp/$run $outputdir
答案 0 :(得分:0)
复制符号链接时添加-P
选项,或者更好地使用-d
。:
-P, - no-dereference永远不会遵循SOURCE中的符号链接
-d与--no-dereference --preserve = links
相同- preserve [= ATTR_LIST]保留指定的属性(默认值:mode,ownership,timestamps),如果可能的话还有其他属性:context,links,xattr,all
这有助于防止在遇到循环链接时进入infinte循环。我还建议正确引用你的变量,以防止单词分裂和意外的pathanme扩展。
cp -dr "$rundir" "/var/tmp/$run"
您还可以考虑-a
而不是-dr
。