[发明专利]一种限制shell脚本并行执行的方法有效
申请号: | 200710130140.0 | 申请日: | 2007-07-20 |
公开(公告)号: | CN101082870A | 公开(公告)日: | 2007-12-05 |
发明(设计)人: | 谢斌 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 龙洪;霍育栋 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 限制 shell 脚本 并行 执行 方法 | ||
技术领域
本发明涉及linux的脚本运行控制,尤其涉及一种在linux和unix平台 上限制shell脚本并行执行的方法。
背景技术
目前随着linux的广泛使用,shell脚本也得到了大量的运用,但是在实 际应用的过程中,往往要求出现这种需求,同一个脚本同一时刻只允许一个 shell脚本运行,也就是说同一个时刻不允许两个以上相同的脚本都在运行。
目前广泛采用的“限制shell脚本同时允许的”技术有两种,但都存在 一定的不足:
第一种用ps一类命令找出已经运行脚本的数量,如果大于等于2,就退 出当前脚本,等于1,则运行。这种技术的缺点是:首先,ps取得脚本文件 进程数量就有很多陷阱,例如有时无法ps到脚本文件的名称,即使可以ps 到脚本名,如果用到管道的话,由于子shell的原因,在大多数平台下会得 到奇怪的结果,有时得到数字a,有时又得到数字b,让人无所适从。就算 计数的问题已经解决了,还有问题:如果两个脚本实例同时计数,显然数字 都应该等于2,于是两个都退出了。于是在这一时间点上没有一个脚本在执 行。
第二种加锁的方法。就是脚本在执行开始先试图得到一个“锁”,得到则 继续执行,反之就退出,这种方法的缺点是有两个:加锁时如何避免多个进 程同时对同一个共享数据进行某种处理,而结果又取决于执行的顺序、怎么 样避免出现“死锁”的情况;对于前一个缺点,目前广泛采用的“创建目录”、 “符号连接”、“文件首行竞争”等技术可以基本解决;后一个缺点解决起 来很麻烦,问题的难点在于如何找到一种“原子”操作,将检测死锁和删除死 锁的动作一步完成,否则又会出现与加锁时同样的问题。例如:进程1检测 到死锁;进程2监测到死锁;进程1删除死锁;进程x(也可能是进程1自 己)加锁,开始运行;进程2(错误地)删除死锁;此时锁没有占用,于是 任意进程都可以加锁并投入运行。这样又出现了两个进程同时运行的情况, 目前还没有找到一个好的删除“死锁”的原子操作。
发明内容
本发明要解决的技术问题就是提供一种限制shell脚本并行执行的方法, 克服现有技术中很难实现控制shell脚本并行执行的问题。
为了解决上述技术问题,本发明提供一种限制shell脚本并行执行的方 法,应用于linux和unix平台,包括如下步骤:
(1)当有shell脚本需要执行时,脚本模块处理器向管道写入请求;
(2)令牌模块处理器在管道另一端顺序读取所述请求,当有令牌空闲 时,将令牌按请求的先后顺序发给先请求的shell脚本进程,直到没有令牌 可用;得到令牌的进程允许运行;没有得到令牌的进程则退出,不会执行。
进一步地,所述步骤(1)执行之前,所述令牌模块处理器判断管道文 件是否存在,若不存在则创建管道文件。
进一步地,所述步骤(1)中,当有shell脚本需要执行时,所述脚本模 块处理器先判断令牌模块处理器创建的管道文件是否存在,若存在则向管道 写入请求,若不存在,则退出。
进一步地,所述步骤(1)中,所述请求内容包括需要执行的shell脚本 的进程号。
进一步地,当所述得到令牌的进程执行完毕,脚本模块处理器向管道发 送终止信号,交回令牌。
进一步地,所述脚本模块处理器通过trap命令捕获进程退出信号,从而 向管道发送终止信号,交回令牌。
进一步地,所述令牌模块处理器定时检测是否有死锁出现,若存在死锁, 则删除死锁进程,并设置空闲的令牌数加1。
进一步地,所述令牌模块处理器通过一计数器累计循环次数来实现定 时,当存在死锁时,计数器置位,重新开始累计循环次数。
本发明引入的令牌概念,借鉴多进程编程中临界区的概念,如果各个进 程进入设立的临界区,只可能一个一个地顺序进入,利用linux的管道,多 个进程写到同一个管道,只可能一行一行地进入,相应的,另一端也是一行 一行地读出,如此就可以实现并行执行的多个进程进入临界区时的“串行 化”,利用单独的死锁检测脚本,来检测死锁,这样也就没有多个并发进程 对同一个令牌进行操作,所以上面描述的死锁问题发生的基础也就根本不存 在了,这样就可以解决死锁的问题。
附图说明
图1本发明实施例限制shell脚本并行执行的方法的流程图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710130140.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:无线能量理疗鞋
- 下一篇:一种混合动力汽车动力系统及其控制方法