1、防止一个shell脚本同时被多个进程修改调用
# 添加防止并行逻辑
LOCK_NAME="/tmp/docker_build.lock"
get_lock='false'
# 进行10次尝试,如果都没有抢到锁,则退出
for((i=0;i<10;i++))
do
# 设置禁止重复调用覆盖
if ( set -o noclobber; echo "$$" > "$LOCK_NAME") 2> /dev/null; then
# INT:中断,TERM:终止,EXIT:退出
# 当出现上面的信号时,将进行释放锁的操作
trap 'rm -f "$LOCK_NAME"; exit $?' INT TERM EXIT
# 开始正常的操作
get_lock='true'
break
else
echo "Failed to acquire lockfile: $LOCK_NAME sleep 10"
sleep 10
fi
done
# 如果抢锁失败,退出脚本
if [[ "$get_lock" == "false" ]]; then
echo "Failed to acquire lockfile: $LOCK_NAME"
echo "Held by $(cat ${LOCK_NAME})"
exit 1
fi



