手机版
你好,游客 登录 注册
背景:
阅读新闻

Linux 限制两个shell脚本同时执行

[日期:2017-02-08] 来源:Linux社区  作者:liqilong2010 [字体: ]

Linux 限制两个shell脚本同时执行,问题出现的原因,由于现在发版是用通过执行脚本,都会都过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中执行其后的语句

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-02/140359.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款