shell脚本子进程管理方法及系统技术方案

技术编号:13078065 阅读:67 留言:0更新日期:2016-03-30 12:23
本发明专利技术涉及一种shell脚本子进程管理方法,包括:得到欲管理的shell脚本;修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;接收上述发送的进程号及子进程号;根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描。本发明专利技术还涉及一种shell脚本子进程管理系统。本发明专利技术解决了shell脚本子进程的管理和控制问题,能够对shell脚本所消耗的资源情况进行实时监控,彻底进行资源回收。

【技术实现步骤摘要】

本专利技术涉及一种shell脚本子进程管理方法及系统
技术介绍
根据Iinux操作系统的特性,当父进程执行结束之后,如果它的子进程还在运行,那么这些子进程都交给操作系统管理,也就是说这些子进程的父进程都变成了 init进程。当shell脚本执行完毕之后,如果shell脚本所产生的后台进程还在执行,这时将难以分辨哪些进程由该shell脚本产生,因为这些子进程的父进程号都变成了 I。例如,执行shell脚本之后,想对该shell脚本所产生的子进程进行管理,将变得比较困难。现有的任务调度系统,可以很方便地控制电脑节点在何时何种情况下执行某个进程任务,并且能够提供任务的暂停、删除等操作。但是对于shell脚本的执行任务,即shell脚本子进程的管理存在以下问题:第一,判断任务执行结束时间不准确,因为某些shell进程执行完毕了,还有一些后台子进程在执行;第二,资源回收不彻底,进行任务删除的时候,由于有可能产生后台子进程的情况,会有些子进程不能删除。
技术实现思路
有鉴于此,有必要提供一种shell脚本子进程管理方法及系统。本专利技术提供一种shell脚本子进程管理方法,该方法包括如下步骤:a.得到欲管理的shell脚本;b.修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;c.执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;d.接收上述发送的进程号及子进程号;e.根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描。其中,所述步骤b中对shell脚本的修改包括:在shell脚本前端加上获取shell脚本进程号的语句;及在shell脚本末尾也加入获取shell脚本子进程号的语句。所述的步骤b还包括:在修改shell脚本的同时,对shell脚本进行备份。所述步骤b中在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本,具体包括:bl.判断当前shell脚本是否调用了其他shell脚本:如果当前shell脚本调用了其他shell脚本,则进入步骤b2,如果该shell脚本没有调用其他shell脚本,则流程结束;b2.修改上述被调用的shell脚本,而后返回步骤bl。所述的步骤e包括:从所述shell脚本执行开始,根据接收的shell脚本的进程号及子进程号维护子进程树状图;周期性实时检查该进程是否有新的子进程产生,并实时更新子进程树状图。本专利技术还提供一种shell脚本子进程管理系统,包括获取模块、修改模块、执行模块、接收模块及扫描模块,其中:所述获取模块用于得到欲管理的shell脚本;所述修改模块用于修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;所述执行模块用于执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;所述接收模块用于接收上述发送的进程号及子进程号;所述扫描模块用于根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描。其中,所述的修改模块对shell脚本的修改包括:在shell脚本前端加上获取shell脚本进程号的语句;及在shell脚本末尾也加入获取shell脚本子进程号的语句。所述的修改模块还用于:在修改shell脚本的同时,对shell脚本进行备份。所述的扫描模块具体用于:从所述shell脚本执行开始,根据接收的shell脚本的进程号及子进程号维护子进程树状图;周期性实时检查该进程是否有新的子进程产生,并实时更新子进程树状图。本专利技术shell脚本子进程管理方法及系统,解决了 shell脚本子进程的管理和控制问题,在shell脚本执行之后,对于shell脚本所消耗的资源情况进行实时监控,能够很清楚地的知道其子进程的资源消耗情况,并且能够随时删除其启动的所有子进程,彻底进行资源回收。本专利技术可以应用于任务调度系统中,用于对一些脚本任务的控制和管理。【附图说明】图1为本专利技术shell脚本子进程管理方法的流程图;图2为本专利技术步骤S402欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本的具体作业流程图;图3为本专利技术具体实施例子进程树状图的示意图;图4为本专利技术shell脚本子进程管理系统的硬件架构图。【具体实施方式】下面结合附图及具体实施例对本专利技术作进一步详细的说明。参阅图1所示,是本专利技术shell脚本子进程管理方法较佳实施例的作业流程图。步骤S401,得到欲管理的shell脚本。具体而言:得到Linux操作系统中需要管理的shell脚本。步骤S402,修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本。具体而言:对上述欲管理的及被调用的shell脚本进行两处修改:其一,在shell脚本前端加上获取shell脚本进程号的语句,使得shell脚本将其进程号发送给控制管理进程。其二,在shell脚本末尾也加入程序语句,使得shell脚本结束前将该shell脚本所有的子进程的进程号发送给控制管理进程。最后,在shell脚本进行修改的同时,对shell脚本进行备份,以便于在shell脚本执行结束之后,对shell脚本进行还原。值得注意的是,本实施例对于shell脚本调用的其他shell脚本也进行修改,并且一层一层处理,使得所有被调用的shell脚本都进行修改,具体过程请参考图2。步骤S403,执行上述修改后的shell脚本。具体而言:根据上述对shell脚本进行的两处修改,脚本执行到第一个修改处时,将进程号发送给控制管理进程。脚本执行到第二个修改处时,shell脚本会向控制管理进程发送本进程的所有子进程号。本实施例在shell脚本执行结束前获得子进程号,是为了避免shell进程执行完成之前,控制管理进程还没有来得及获取所有的子进程号,从而便于对shell脚本子进程进行管理。步骤S404,接收shell脚本发送的进程号及子进程号。具体而言:控制管理进程在上述shell脚本执行到第一个修改处时,接收该shell脚本的进程号;在上述shell脚本执行到第二个修改处时,接收该shell脚本进程的所有子进程号。步骤S405,根据上述接收的shell脚本的进程号及子进程号维护子进程树状图,并进行周期性扫描。具体而言:从上述shell脚本执行开始,控制管理进程根据接收的shell脚本的进程号及子进程号维护一个子进程树状图(请参考图3),控制管理进程周期性实时检查该进程是否有新的子进程产生,并且实时更新子进程树状图。随着子进程的产生和销毁,子进程树状图实时变化。当shell脚本执行结束之后,如果还有其他后台进程在执行的话,也会继续维护所述子进程树状图。通过所述子进程树状图,能够很灵活地对所有的子进程进行管理,很方便地确定子进程的资源消耗情况及进行子进程删除等操作。参阅图2所示,是本专利技术步骤S402该欲管理的shell脚本调用其当前第1页1 2 本文档来自技高网...

【技术保护点】
一种shell脚本子进程管理方法,其特征在于,该方法包括如下步骤:a.得到欲管理的shell脚本;b.修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;c.执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;d.接收上述发送的进程号及子进程号;e.根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描。

【技术特征摘要】

【专利技术属性】
技术研发人员:曾经纬贝振东喻之斌须成忠
申请(专利权)人:中国科学院深圳先进技术研究院
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1