【问题标题】:Infinitely looped path when trying to copy output files尝试复制输出文件时的无限循环路径
【发布时间】:2014-09-14 11:30:03
【问题描述】:

我正在尝试在 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

【问题讨论】:

    标签: linux mpi cp


    【解决方案1】:

    复制符号链接时添加-P选项,或者更好的是使用-d。:

    -P, --no-dereference    从不遵循 SOURCE 中的符号链接

    -d    与 --no-dereference --preserve=links 相同

    --preserve[=ATTR_LIST]    保留指定的属性(默认:模式、所有权、时间戳),如果可能的话,还保留其他属性:上下文、链接、xattr、所有

    这将有助于防止在遇到循环链接时进入无限循环。我还建议正确引用您的变量,以防止分词和意外的路径扩展。

    cp -dr "$rundir" "/var/tmp/$run"
    

    您也可以考虑使用-a 而不是-dr

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多