linux 限制两个shell脚本同时执行
2017-02-07 10:31
260 查看
问题出现的原因,由于现在发版是用通过执行脚本,都会都过mvn打包,同时执行导致问题。
解决方案在脚本执行前,检查、加锁、、、
解决方案在脚本执行前,检查、加锁、、、
#!/bin/bash { flock -n 3 if [ $? -eq 1 ] then echo "other sh running" while [ 1 ] do flock -n 3 [ $? -ne 1 ]&&break; sleep 1 done 3<>/tmp/.lock fi echo "lock and wait" sleep 10 } 3<>/tmp/.lock 非阻塞方式,没有锁,加锁继续往下执行,有锁循环检查,直到没有锁再继续执行。 选项和参数: -s,--shared:获取一个共享锁,在定向为某文件的FD上设置共享锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置独占锁的请求失败,而其他进程试图在定向为此文件的FD上设置共享锁的请求会成功。 -x,-e,--exclusive:获取一个排它锁,或者称为写入锁,为默认项 -u,--unlock:手动释放锁,一般情况不必须,当FD关闭时,系统会自动解锁,此参数用于脚本命令一部分需要异步执行,一部分可以同步执行的情况。 -n,--nb, --nonblock:非阻塞模式,当获取锁失败时,返回1而不是等待 -w, --wait, --timeout seconds:设置阻塞超时,当超过设置的秒数时,退出阻塞模式,返回1,并继续执行后面的语句 -o, --close:表示当执行command前关闭设置锁的FD,以使command的子进程不保持锁。 -c, --command command:在shell中执行其后的语句
相关文章推荐
- 从Linux程序中执行shell(程序、脚本)并获得输出结果
- linux 定时执行shell脚本
- linux下shell脚本执行方法及exec和source命令
- linux下C程序插入执行shell脚本
- 从Linux程序中执行shell(程序、脚本)并获得输出结果
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- linux下shell脚本执行方法及exec和source命令
- [shell应用进阶]:限制同时运行脚本实例的个数 -- 串行化:换一个思路。
- linux 远程执行 shell脚本中nohup启动注意
- 从Linux程序中执行shell(程序、脚本)并获得输出结果(转)
- 从Linux程序中执行shell(程序、脚本)并获得输出结果
- 从Linux程序中执行shell(程序、脚本)并获得输出结果(转)
- linux 定时执行shell脚本
- Linux/shell命令的实际应用——while;do;循环执行脚本
- 从Linux程序中执行shell(程序、脚本)并获得输出结果(转)
- linux执行shell脚本的方式及一些区别
- linux下后台执行shell脚本
- solaris\linux下建系统任务执行shell脚本
- 【转】linux 定时执行shell脚本
- 从Linux程序中执行shell(程序、脚本)并获得输出结果(转)