【发布时间】:2020-09-09 11:03:11
【问题描述】:
我在 slurm 上运行数组作业,因此每个作业都需要将文件从本地目录复制到临时目录。此cp 不应同时出现。
这是我想出的代码:
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
这段代码做对了吗? 或者我需要
rm -f $LOCKFILE_1
再次删除锁定文件?
【问题讨论】:
-
This cp should not occur simultaneously。为什么?您可以同时阅读。您不能同时读取和写入 - 但此处没有显示写入,因此在每个作业的目标位置唯一之前,只需并行复制即可。 -
系统管理员可能会生气(他过去也这样做过......)