栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell脚本的锁

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell脚本的锁

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964266.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号