CN105446805B - shell脚本子进程管理方法及系统 - Google Patents
shell脚本子进程管理方法及系统 Download PDFInfo
- Publication number
- CN105446805B CN105446805B CN201410421138.9A CN201410421138A CN105446805B CN 105446805 B CN105446805 B CN 105446805B CN 201410421138 A CN201410421138 A CN 201410421138A CN 105446805 B CN105446805 B CN 105446805B
- Authority
- CN
- China
- Prior art keywords
- shell script
- subprocess
- shell
- script
- modified
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013515 script Methods 0.000 title claims abstract description 212
- 238000007726 management method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 98
- 230000005540 biological transmission Effects 0.000 claims abstract description 6
- 230000000737 periodic effect Effects 0.000 claims abstract description 6
- 238000012986 modification Methods 0.000 claims description 22
- 230000004048 modification Effects 0.000 claims description 22
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000006378 damage Effects 0.000 description 2
- 238000004064 recycling Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种shell脚本子进程管理方法,包括:得到欲管理的shell脚本;修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;接收上述发送的进程号及子进程号;根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描。本发明还涉及一种shell脚本子进程管理系统。本发明解决了shell脚本子进程的管理和控制问题,能够对shell脚本所消耗的资源情况进行实时监控,彻底进行资源回收。
Description
技术领域
本发明涉及一种shell脚本子进程管理方法及系统。
背景技术
根据linux操作系统的特性,当父进程执行结束之后,如果它的子进程还在运行,那么这些子进程都交给操作系统管理,也就是说这些子进程的父进程都变成了init进程。当shell脚本执行完毕之后,如果shell脚本所产生的后台进程还在执行,这时将难以分辨哪些进程由该shell脚本产生,因为这些子进程的父进程号都变成了1。例如,执行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脚本,具体包括:b1.判断当前shell脚本是否调用了其他shell脚本:如果当前shell脚本调用了其他shell脚本,则进入步骤b2,如果该shell脚本没有调用其他shell脚本,则流程结束;b2.修改上述被调用的shell脚本,而后返回步骤b1。
所述的步骤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脚本调用其他shell脚本时修改被调用的其他shell脚本的具体作业流程图。
步骤S4021,判断当前shell脚本是否调用了其他shell脚本。如果当前shell脚本调用了其他shell脚本,则进入步骤S4022;如果该shell脚本没有调用其他shell脚本,则流程结束。
步骤S4022,修改上述被调用的shell脚本,而后返回步骤S4021,继续判断该被调用的shell脚本是否还调用了其他shell脚本。如此一层一层处理,直至所有被调用的shell脚本都进行了修改。具体修改位置及内容在步骤S402中已详细描述,这里不再赘述。
参阅图4所示,是本发明shell脚本子进程管理系统10的硬件架构图。该系统包括获取模块100、修改模块101、执行模块102、接收模块103及扫描模块104。
所述获取模块100用于得到欲管理的shell脚本。具体而言:所述获取模块得到Linux操作系统中需要管理的shell脚本。
所述修改模块101用于修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本。具体而言:
对上述欲管理的及被调用的shell脚本进行两处修改:
其一,在shell脚本前端加上获取shell脚本进程号的语句,使得shell脚本将其进程号发送给控制管理进程。
其二,在shell脚本末尾也加入程序语句,使得shell脚本结束前将该shell脚本所有的子进程的进程号发送给控制管理进程。
最后,在shell脚本进行修改的同时,对shell脚本进行备份,以便于在shell脚本执行结束之后,对shell脚本进行还原。
值得注意的是,本实施例对于shell脚本调用的其他shell脚本也进行修改,并且一层一层处理,使得所有被调用的shell脚本都进行修改。
所述执行模块102用于执行上述修改后的shell脚本。具体而言:
根据上述对shell脚本进行的两处修改,脚本执行到第一个修改处时,将进程号发送给控制管理进程。脚本执行到第二个修改处时,shell脚本会向控制管理进程发送本进程的所有子进程号。本实施例在shell脚本执行结束前获得子进程号,是为了避免shell进程执行完成之前,控制管理进程还没有来得及获取所有的子进程号,从而便于对shell脚本子进程进行管理。
所述接收模块103用于接收shell脚本发送的进程号及子进程号。具体而言:
控制管理进程在上述shell脚本执行到第一个修改处时,接收该shell脚本的进程号;在上述shell脚本执行到第二个修改处时,接收该shell脚本进程的所有子进程号。
所述扫描模块104用于根据上述接收的shell脚本的进程号及子进程号维护子进程树状图,并进行周期性扫描。具体而言:
从上述shell脚本执行开始,控制管理进程根据接收的shell脚本的进程号及子进程号维护一个子进程树状图(请参考图3),控制管理进程周期性实时检查该进程是否有新的子进程产生,并且实时更新子进程树状图。随着子进程的产生和销毁,子进程树状图实时变化。当shell脚本执行结束之后,如果还有其他后台进程在执行的话,也会继续维护所述子进程树状图。通过所述子进程树状图,能够很灵活地对所有的子进程进行管理,很方便地确定子进程的资源消耗情况及进行子进程删除等操作。
虽然本发明参照当前的较佳实施方式进行了描述,但本领域的技术人员应能理解,上述较佳实施方式仅用来说明本发明,并非用来限定本发明的保护范围,任何在本发明的精神和原则范围之内,所做的任何修饰、等效替换、改进等,均应包含在本发明的权利保护范围之内。
Claims (7)
1.一种shell脚本子进程管理方法,其特征在于,该方法包括如下步骤:
a.得到欲管理的shell脚本;
b.修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;
c.执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;
d.接收上述发送的进程号及子进程号;
e.根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描;
所述步骤b中对shell脚本的修改包括:
在shell脚本前端加上获取shell脚本进程号的语句;及
在shell脚本末尾也加入获取shell脚本子进程号的语句;
所述步骤c包括:
根据对shell脚本进行的两处修改,脚本执行到第一个修改处时,将进程号发送给控制管理进程;脚本执行到第二个修改处时,shell脚本向控制管理进程发送本进程的所有子进程号。
2.如权利要求1所述的方法,其特征在于,所述的步骤b还包括:
在修改shell脚本的同时,对shell脚本进行备份。
3.如权利要求1所述的方法,其特征在于,所述步骤b中在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本,具体包括:
b1.判断当前shell脚本是否调用了其他shell脚本:如果当前shell脚本调用了其他shell脚本,则进入步骤b2,如果该shell脚本没有调用其他shell脚本,则流程结束;
b2.修改上述被调用的shell脚本,而后返回步骤b1。
4.如权利要求1所述的方法,其特征在于,所述的步骤e包括:
从所述shell脚本执行开始,根据接收的shell脚本的进程号及子进程号维护子进程树状图;
周期性实时检查该进程是否有新的子进程产生,并实时更新子进程树状图。
5.一种shell脚本子进程管理系统,其特征在于,该系统包括获取模块、修改模块、执行模块、接收模块及扫描模块,其中:
所述获取模块用于得到欲管理的shell脚本;
所述修改模块用于修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;
所述执行模块用于执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;
所述接收模块用于接收上述发送的进程号及子进程号;
所述扫描模块用于根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描;
所述的修改模块对shell脚本的修改包括:
在shell脚本前端加上获取shell脚本进程号的语句;及
在shell脚本末尾也加入获取shell脚本子进程号的语句;
所述执行模块具体用于根据对shell脚本进行的两处修改,脚本执行到第一个修改处时,将进程号发送给控制管理进程;脚本执行到第二个修改处时,shell脚本向控制管理进程发送本进程的所有子进程号。
6.如权利要求5所述的系统,其特征在于,所述的修改模块还用于:
在修改shell脚本的同时,对shell脚本进行备份。
7.如权利要求5所述的系统,其特征在于,所述的扫描模块具体用于:
从所述shell脚本执行开始,根据接收的shell脚本的进程号及子进程号维护子进程树状图;
周期性实时检查该进程是否有新的子进程产生,并实时更新子进程树状图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410421138.9A CN105446805B (zh) | 2014-08-25 | 2014-08-25 | shell脚本子进程管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410421138.9A CN105446805B (zh) | 2014-08-25 | 2014-08-25 | shell脚本子进程管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446805A CN105446805A (zh) | 2016-03-30 |
CN105446805B true CN105446805B (zh) | 2019-06-04 |
Family
ID=55557041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410421138.9A Active CN105446805B (zh) | 2014-08-25 | 2014-08-25 | shell脚本子进程管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105446805B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121595A (zh) * | 2016-11-28 | 2018-06-05 | 中国科学院声学研究所 | 一种Docker容器多进程管理方法及系统 |
US10983857B2 (en) | 2018-10-26 | 2021-04-20 | International Business Machines Corporation | Continuing a running script after modification |
CN110781491B (zh) * | 2019-10-25 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种进程访问文件的控制方法及装置 |
CN114880189A (zh) * | 2022-03-08 | 2022-08-09 | 统信软件技术有限公司 | 应用程序的监控方法、装置及计算设备 |
-
2014
- 2014-08-25 CN CN201410421138.9A patent/CN105446805B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105446805A (zh) | 2016-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210232498A1 (en) | Method for testing edge computing, device, and readable storage medium | |
CN105446805B (zh) | shell脚本子进程管理方法及系统 | |
US11119911B2 (en) | Garbage collection method and device | |
CN105511963B (zh) | 一种基于Android系统的内存优化方法及系统 | |
US8639985B2 (en) | USB testing apparatus and method | |
CN113110313A (zh) | 一种基于数字孪生的施工过程管控方法 | |
CN110333895B (zh) | 一种面向电力调控云的自动化运维平台 | |
CN108121595A (zh) | 一种Docker容器多进程管理方法及系统 | |
CN105069352A (zh) | 一种在服务器上构建可信应用程序运行环境的方法 | |
CN113778486A (zh) | 一种代码流水线的容器化处理方法、装置、介质及设备 | |
CN104426945B (zh) | 一种获取应用性能数据的方法、设备和系统 | |
CN102646066B (zh) | 一种开机时间的获取方法及装置 | |
CN112445598A (zh) | 一种基于quartz的任务调度方法、装置、电子设备以及介质 | |
CN112882793B (zh) | 一种容器资源共享的方法和系统 | |
CN110651256A (zh) | 用于在软件更新期间防止服务中断的系统和方法 | |
CN102420709A (zh) | 一种基于任务框架的调度任务管理方法和设备 | |
CN106713507A (zh) | 一种批量云终端设备的管理方法及管理系统 | |
CN112905306A (zh) | 多集群容器管理方法、装置、电子设备和存储介质 | |
CN114189439A (zh) | 一种自动扩容的方法及装置 | |
CN109389328A (zh) | 一种卡产品开发过程管理方法及系统 | |
US20150066160A1 (en) | Control program management device, information processing device, and control program processing method | |
CN113157569A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN108628901A (zh) | 一种数据更新方法及装置 | |
CN202870806U (zh) | 一种远程更新控制系统 | |
CN105323289A (zh) | 一种基于分布式的数据同步方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
OL01 | Intention to license declared |