开源中文网

您的位置: 首页 > Shell > 正文

linux中防止shell脚本重复执行

来源: 网络整理  作者: 佚名

防止shell脚本重复执行这个问题从来没有考虑过了,不过今天看到这篇教程觉得还是有道理了,下面我们来看一篇关于防止shell脚本重复执行吧。
今天在jenkins里部署的时候,由于开发们多次频繁的提交的代码,造成jenkins里的shell脚本在那频繁的部署,为了阻止这样的问题,专门找了个防止重复执行的代码.下面来看代码:
#!/bin/bash

LOCK_NAME="/tmp/my.lock"
if ( set -o noclobber; echo "$$" > "$LOCK_NAME") 2> /dev/null;
then
        trap 'rm -f "$LOCK_NAME"; exit $?' INT TERM EXIT

       
### 开始正常流程
       
### 正常流程结束

       
### Removing lock
        rm -f $LOCK_NAME
        trap - INT TERM EXIT
else
        echo "Failed to acquire lockfile: $LOCK_NAME."
        echo "Held by $(cat $LOCK_NAME)"
        exit 1
fi

echo "Done."
这样就能保证my.lock只能被一个进程创建出来。比touch靠谱多了。
trap 可以捕获各种信号,然后做出处理:
INT 用来处理 ctrl+c取消脚本执行的情况。
TERM 用来处理 kill -TERM pid 的情况。
EXIT 不清楚
另外,对于 kill -9 无效.

Tags:脚本
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明