首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用flock复制文件

使用flock复制文件
EN

Stack Overflow用户
提问于 2020-09-09 19:03:11
回答 1查看 121关注 0票数 0

我在slurm上运行数组作业,因此每个作业都需要将文件从本地目录复制到临时目录。此cp不应同时发生。

这是我想出来的代码:

代码语言:javascript
复制
mydirectory=mydb
LOCKFILE_1=${mydirectory}.lock
set -e
(
    flock -w 3600 200 # Wait for the lockfile for max. 1 hour (3600 s), to not block the queue forever in case of dead lock files.
    cp -r ${mydirectory} $TMPDIR/newdestinationdirectory
) 200>$LOCKFILE_1
set +e

这段代码做的是对的吗?或者我需要

代码语言:javascript
复制
rm -f $LOCKFILE_1

再次删除锁定文件?

EN

回答 1

Stack Overflow用户

发布于 2020-09-15 17:20:53

如果我理解正确的话,您希望限制文件系统和网络上的负载。Slurm的sbcast命令就是针对这种情况的。您只能复制单个文件,因此在向所有节点广播之前,请先压缩目录:

代码语言:javascript
复制
tar cf ${mydirectory}.tar $mydirectory
sbcast ${mydirectory}.tar $TMPDIR/
srun -n ${SLURM_JOB_NUM_NODES} --ntasks-per-node=1 "tar xf ${mydirectory}.tar -C $TMPDIR/"

这只能在作业分配中完成(例如,在作业脚本中)!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63810260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档