进程管理方法及进程管理装置的制造方法_2

文档序号:9929426阅读:来源:国知局
级目标子进程发送的所述一级目标子进程的进程ID。
[0043]子进程在执行所述shell命令后,向主进程返回的数据内容可能比较多,参考步骤101的相关描述,可根据之前查询命令的代码中的变量参数名来获取所述子进程的进程ID,例如,获取到的相关代码为:
[0044]processld = 4007 ;
[0045]即表示所述一级目标子进程的进程ID为4007。
[0046]步骤103:根据启动所述主进程的用户对应的用户名查询所述用户包含的所有进程信息。
[0047]本申请中,所述用户“包含”的所有进程信息指的是该用户直接或间接启动的各级子进程的信息,即该用户名下的所有级别的进程的信息。
[0048]对应的查询方式的实现代码为:
[0049]ps-efIgrep-v grep|grep'username ;
[0050]其中,username为启动主进程的用户对应的用户名,在实际应用中,可替换成系统实际的用户名。在命令行中输入该段代码,可得到该用户名username名下所有的级别的子进程,其中也包括主进程的相关信息。
[0051]步骤104:根据所述一级目标子进程的进程ID对所述用户包含的所有进程信息进行分析,以获得所述一级目标子进程包含的所有级别的子进程的进程ID。
[0052]步骤103对应的查询结果为用户包含的所有进程的相关信息,包括该用户启动的多个主进程和各个主进程包含的不同级别的子进程的进程ID号和一些相关的描述信息,因此比较繁杂,需要通过该主进程的进程ID和步骤102中获得的所述一级目标子进程的进程ID进行查找,直至找出所述一级目标子进程包含的所有级别的子进程的进程ID。
[0053]在本发明的其他实施例中,可选的,还可以包括步骤105:根据获得的所述一级目标子进程的进程ID,以及获得的所述一级目标子进程包含的所有级别的子进程的进程ID,删除所述一级目标子进程及所述一级目标子进程包含的所有级别的子进程。
[0054]由以上实施例可见,本发明实施例提供的进程管理方法,首先通过在主进程的一级目标子进程所执行的shell命令中写入查询进程ID命令,以获得所述一级目标子进程的进程ID,再根据启动所述主进程的用户对应的用户名查询所述用户包含的所有进程信息,并根据所述一级目标子进程的进程ID对所述用户包含的所有进程信息进行分析,以获得所述一级目标子进程包含的所有级别的子进程的进程ID。本发明的技术方案能够使主进程获得所有级别的子进程的进程ID,从而允许主进程针对特定的目标子进程进行监控和管理,例如删除某些耗费资源的子进程,以防止这些子进程对系统资源进行长时间占用造成的浪费。
[0055]如图2A所示,为本发明进程管理方法提供的另一个实施例的流程示意图,该实施例包括如下步骤:
[0056]步骤201:在所述主进程的一级目标子进程所执行的shell命令的起始位置写入所述查询进程ID命令,以使所述一级目标子进程在执行所述shell命令时,向主进程发送所述一级目标子进程的进程ID。
[0057]例如,该查询命令的代码为:
[0058]echo processld = $$ ;
[0059]其中,processld为查询的子进程的进程ID的变量参数名,相应的,在步骤202中获得所述子进程的进程ID时也根据此变量参数名来获取。
[0060]将该查询命令的代码放入shell命令的起始位置,具体可以是,在该shell命令对应的代码的原首行代码之前,插入新的一行作为首行,在该首行中写入该查询命令的代码,例如图2B所示,为所述查询进程ID的过程对应的代码示意图,在图中,该shell命令的原有代码用虚线来代替。
[0061]可选的,将该查询命令的代码放入shell命令的命令头部,具体还可以是,在该shell命令对应的代码的初始位置之前,插入该查询命令的代码,即将该查询命令的代码放在该shell命令对应的代码的首行,如图2C所示,为所述查询进程ID的过程对应的代码的另一个示意图,在图中,该shell命令的原有代码用虚线来代替。
[0062]由于该子进程返回的数据可能比较多,也比较繁杂,把查询进程ID命令插入所述shell命令的起始位置的好处在于,可以从所述一级子进程返回的数据中,在第一行数据或前几行中即能快速找到该一级子进程对应的ID。
[0063]步骤202:主进程在启动所述一级目标子进程后,获得所述一级目标子进程发送的所述一级目标子进程的进程ID。
[0064]在主进程内部的某一线程启动该目标子进程,获得该目标子进程的输入,用来读取该目标子进程返回的数据,第一行返回数据的内容即为processld=进程ID,即可获得所述一级目标子进程的进程ID。
[0065]步骤203:根据启动所述主进程的用户对应的用户名查询所述用户包含的所有进程信息。
[0066]对应的查询代码为:
[0067]ps-efIgrep-v grep|grep'username ;
[0068]其中,username为启动主进程的用户对应的用户名,在实际应用中,可替换成系统实际的用户名。在命令行中输入该段代码,可得到该用户名username名下所有的级别的子进程也包括主进程的相关信息。
[0069]步骤204:从所述一级目标子进程的进程ID依次进行检索,直至获得所述一级目标子进程包含的所有级别的子进程的进程ID,在检索时,根据当前级别的子进程的进程ID检索到所述当前级别的子进程的下一级别的子进程的进程ID。
[0070]这里以一个实际应用中的例子来说明步骤203及步骤204的过程,如图2D所示,为步骤203对应的查询代码,及对应的查询结果的示意图。
[0071]如图2D所示,与步骤203中对应的查询代码为:
[0072]ps-efIgrep-v grep|grep'idcp ;
[0073]其中idcp为启动主进程的用户对应的用户名。在该查询代码的下面列出的查询结果中包含多行数据,每一行数据表示一个进程的信息,第一列表示启动该进程的用户的用户名,即idcp,第二列为该进程的进程ID,第三列为这个进程的上一级别的进程,其余列为这个进程的相关描述信息。
[0074]如图2D所示,首先找到主进程的信息所在的行,由于主进程的上级进程即为启动该主进程的用户,即idcp,用户为系统级,进程ID号默认1,因此据此找到主进程的进程ID=3915。实际上,主进程在一启动时就知道自己的ID号,也可以直接根据主进程的ID =3915及用户的进程ID = I快速找到主进程所在的行。
[0075]根据主进程的进程ID = 3915,依次查找到若干一级子进程对应的ID号为4007,4021,4038,4050,4064,假设步骤202中获得的目标子进程的进程ID = 4007,则再进一步根据该目标子进程的进程ID = 4007查找到该目标子进程的下一级子进程的进程ID = 4010,即为二级子进程。之后进一步根据该二级子进程的进程ID = 4010查找到该二级子进程的下一级子进程的进程ID = 4011,即为三级子进程。根据此方法依次检索,直至查找到该目标子进程(ID = 4007)包含的所有级别的子进程的进程ID。
[0076]步骤205:根据获得的所述一级目标子进程的进程ID,以及获得的所述一级目标子进程包含的所有级别的子进程的进程ID,删除所述一级目标子进程及所述一级目标子进程包含的所有级别的子进程。
[0077]在一些情况下,主进程的某个子进程可能由于各种原因无法正常退出,导致其下级子进程也无法正常对出,此时就可以依据步骤201至204中的方法获得该子进程包含的所有级别的子进程,从而在主进程中强制删除或停止该子进程以及所述所有级别的其他子进程。
[0078]由以上实施例可见,本发明实施例提供的进程管理方法,首先通过在主进程的一级目标子进程所执行的shell命令的起始位置写入查询进程ID命令,以获得所述一级目标子进程的进程ID,再根据启动所述主进程的用户对应的用户名查询所述用户包含的所有进程信息,并根据所述一级目标子进程的进程ID对所述用户包含的所有进程信息进行分析,以逐级获得所述一级目标子进程包含的所有级别的子进程的进程ID。本发明的技术方案能够使主进程获得所有级别的子进程的进程ID,从而允许主
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1