CN105446805A - shell脚本子进程管理方法及系统 - Google Patents
shell脚本子进程管理方法及系统 Download PDFInfo
- Publication number
- CN105446805A CN105446805A CN201410421138.9A CN201410421138A CN105446805A CN 105446805 A CN105446805 A CN 105446805A CN 201410421138 A CN201410421138 A CN 201410421138A CN 105446805 A CN105446805 A CN 105446805A
- Authority
- CN
- China
- Prior art keywords
- shell script
- subprocess
- shell
- script
- management
- 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.)
- Granted
Links
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 (9)
1.一种shell脚本子进程管理方法,其特征在于,该方法包括如下步骤:
a.得到欲管理的shell脚本;
b.修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;
c.执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;
d.接收上述发送的进程号及子进程号;
e.根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描。
2.如权利要求1所述的方法,其特征在于,所述步骤b中对shell脚本的修改包括:
在shell脚本前端加上获取shell脚本进程号的语句;及
在shell脚本末尾也加入获取shell脚本子进程号的语句。
3.如权利要求1所述的方法,其特征在于,所述的步骤b还包括:
在修改shell脚本的同时,对shell脚本进行备份。
4.如权利要求1所述的方法,其特征在于,所述步骤b中在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本,具体包括:
b1.判断当前shell脚本是否调用了其他shell脚本:如果当前shell脚本调用了其他shell脚本,则进入步骤b2,如果该shell脚本没有调用其他shell脚本,则流程结束;
b2.修改上述被调用的shell脚本,而后返回步骤b1。
5.如权利要求2所述的方法,其特征在于,所述的步骤e包括:
从所述shell脚本执行开始,根据接收的shell脚本的进程号及子进程号维护子进程树状图;
周期性实时检查该进程是否有新的子进程产生,并实时更新子进程树状图。
6.一种shell脚本子进程管理系统,其特征在于,该系统包括获取模块、修改模块、执行模块、接收模块及扫描模块,其中:
所述获取模块用于得到欲管理的shell脚本;
所述修改模块用于修改上述欲管理的shell脚本,及在该欲管理的shell脚本调用其他shell脚本时修改被调用的其他shell脚本;
所述执行模块用于执行上述修改后的shell脚本,发送该shell脚本的进程号及子进程号;
所述接收模块用于接收上述发送的进程号及子进程号;
所述扫描模块用于根据上述接收的进程号及子进程号维护子进程树状图,并进行周期性扫描。
7.如权利要求6所述的系统,其特征在于,所述的修改模块对shell脚本的修改包括:
在shell脚本前端加上获取shell脚本进程号的语句;及
在shell脚本末尾也加入获取shell脚本子进程号的语句。
8.如权利要求6所述的系统,其特征在于,所述的修改模块还用于:
在修改shell脚本的同时,对shell脚本进行备份。
9.如权利要求7所述的系统,其特征在于,所述的扫描模块具体用于:
从所述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 true CN105446805A (zh) | 2016-03-30 |
CN105446805B 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) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121595A (zh) * | 2016-11-28 | 2018-06-05 | 中国科学院声学研究所 | 一种Docker容器多进程管理方法及系统 |
CN110781491A (zh) * | 2019-10-25 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种进程访问文件的控制方法及装置 |
US10983857B2 (en) | 2018-10-26 | 2021-04-20 | International Business Machines Corporation | Continuing a running script after modification |
CN114281653A (zh) * | 2022-03-08 | 2022-04-05 | 统信软件技术有限公司 | 应用程序的监控方法、装置及计算设备 |
-
2014
- 2014-08-25 CN CN201410421138.9A patent/CN105446805B/zh active Active
Non-Patent Citations (3)
Title |
---|
张尧学等: "《计算机操作系统教程》", 31 October 2006, 清华大学出版社 * |
张春晓: "《UNIX从入门到精通》", 28 February 2013, 清华大学出版社 * |
胡峰松: "《操作系统原理实验教程基于Linux》", 31 December 2009, 清华大学出版社 * |
Cited By (5)
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 |
CN110781491A (zh) * | 2019-10-25 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种进程访问文件的控制方法及装置 |
CN114281653A (zh) * | 2022-03-08 | 2022-04-05 | 统信软件技术有限公司 | 应用程序的监控方法、装置及计算设备 |
CN114281653B (zh) * | 2022-03-08 | 2022-07-12 | 统信软件技术有限公司 | 应用程序的监控方法、装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105446805B (zh) | 2019-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11119911B2 (en) | Garbage collection method and device | |
CN105446805A (zh) | shell脚本子进程管理方法及系统 | |
CN113742031B (zh) | 节点状态信息获取方法、装置、电子设备及可读存储介质 | |
CN108108296B (zh) | 一种云测试方法、服务器及客户端 | |
US20210344556A1 (en) | Method and apparatus for updating an edge node, device, medium and program product | |
CN110543295B (zh) | 可视化Web前端项目构建系统 | |
KR20170118165A (ko) | 네트워크 서비스 기술자를 업데이트하기 위한 방법 및 장치 | |
CN107688489B (zh) | 一种调度任务的方法和系统 | |
CN111459770A (zh) | 服务器运行状态的告警方法、装置、服务器及存储介质 | |
CN113778486B (zh) | 一种代码流水线的容器化处理方法、装置、介质及设备 | |
CN105094777A (zh) | 实现应用截屏的方法及装置 | |
CN103713974A (zh) | 一种高性能作业调度管理节点双机加固方法及设备 | |
CN110750315B (zh) | Android系统中的类加载方法、装置、设备和存储介质 | |
CN111324417A (zh) | 一种Kubernetes集群的组件控制方法、装置、电子设备和介质 | |
CN109614164B (zh) | 实现插件可配置的方法、装置、设备及可读存储介质 | |
CN105681391A (zh) | 一种服务器和安卓客户端及其网络通信方法、装置 | |
CN115391006A (zh) | 一种异构多集群的数据处理方法、装置、介质及终端 | |
CN105988886A (zh) | 一种运维过程中的故障处理方法及装置 | |
CN104468708A (zh) | 数据协同方法和数据协同装置 | |
CN112905306A (zh) | 多集群容器管理方法、装置、电子设备和存储介质 | |
CN104104701A (zh) | 在线服务的配置更新的方法和系统 | |
CN107147630B (zh) | 一种实现omci协议栈代码自动生成的方法及装置 | |
CN112130889A (zh) | 资源的管理方法和装置、存储介质、电子装置 | |
CN111200651A (zh) | 定时调用微服务的方法、系统、设备和介质 | |
CN110324837B (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 |