【发布时间】:2020-01-21 17:54:53
【问题描述】:
我有一个脚本,它具有多个功能,并行运行,它检查文件并经常更新它。我不希望两个函数同时更新文件并创建问题。那么进行原子更新的最佳方式是什么。到目前为止,我有以下内容。
counter(){
a=$1
while true;do
if [ ! -e /tmp/counter.lock ];then
touch /tmp/counter.lock
curr_count=`cat /tmp/count.txt`
n_count=`echo "${curr_count} + $a" | bc`
echo ${n_count} > /tmp/count.txt
rm -fv /tmp/counter.lock
break
fi
sleep 1
done
}
我不确定如何将我的函数转换为使用flock,因为它使用文件描述符,如果我多次调用此函数(或者我认为是这样)可能会产生问题。
【问题讨论】:
-
这是flock最基本的用例。您是否尝试过围绕羊群搜索现有答案?