一种对后台程序进行监控的方法

文档序号:6587680阅读:1024来源:国知局
专利名称:一种对后台程序进行监控的方法
技术领域
本发明涉及后台程序管理技术领域,特别是指一种对后台程序进行监控的方法。
背景技术
在服务器的操作系统中,一般的业务应用程序是作为后台程序,且该程序独立运行,不受任何监视与控制。在后台程序运行的过程中,如果某些后台程序出现异常、错误,将导致这些后台程序崩溃,并退出系统停止运行,那么用户将再也不能享受此后台程序所提供的服务,直至管理员发现并手工重新启动运行这些后台程序使之恢复正常为止。对于电信、银行、保险等要求高可靠性的领域,如遇此问题,其危害更甚。

发明内容
有鉴于此,本发明的目的在于提供一种对后台程序进行监控的方法,在不增加成本的前提下,可以实时监视后台程序的运行,在发现后台程序异常崩溃后,可立即重新启动该后台程序,从而解决后台程序运行时的可靠性问题,可为用户持续提供服务。
为达到上述目的,本发明的技术方案是这样实现的一种对后台程序进行监控的方法,该方法包括以下步骤A、定义需要监视的后台程序的可执行文件名及其相对应的绝对路径,并将与绝对路径相对应的进程句柄作为元素值保存在进程数组中,同时,将绝对路径与文件名的对应关系保存在系统内存中;B、用监视函数监视进程数组的元素值,当被监视的后台程序发生异常退出时,根据进程数组下标所对应的数组元素值得到退出的后台程序的进程句柄,再根据进程句柄与绝对路径的对应关系得到该后台程序的可执行文件的绝对路径,重新启动运行此后台程序,同时操作系统返回该后台程序的新进程句柄,替换进程数组中该退出的后台程序的进程句柄,继续接受监视。
其中,所述的步骤A进一步包括A1、在与监控工具同一目录下建立一个初始化文件,并在该文件中,设置用户要求监视的后台程序的可执行文件名及其绝对路径;A2、从初始化文件中,获取用户需要监视的后台程序文件名的绝对路径,并将之保存在系统内存中;A3、获取当前系统运行中的所有程序可执行文件名及其绝对路径;A4、将步骤A3中获取的绝对路径与步骤A2中获取的需监视的后台程序的绝对路径相比较,如相同则将该绝对路径相对应的进程句柄作为元素值保存在进程数组中,如不同则放弃;A5、判断初始化文件中,用户要求监视的后台程序是否全部正在运行,如果是则结束,否则执行步骤A6;A6、将没有运行的后台程序的可执行文件的绝对路径,作为参数送给进程创建函数,启动并运行这些后台程序;A7、将步骤A6中启动并运行的后台程序的绝对路径的进程句柄作为元素值保存在进程数组中。
其中,所述的步骤A3进一步包括A31、调用获取进程函数得到系统中当前运行的所有进程句柄;A32、调用获取模块文件名的函数得到系统中当前运行的所有模块句柄;A33、调用获取模块可执行文件名函数得到所有后台程序的每个进程中的每个模块的可执行文件名及其绝对路径。
其中,所述的步骤B进一步包括在由线程创建函数创建的子线程中,使用监视函数对后台程序进行监控。
其中,所述的步骤B进一步包括B1、调用监视进程句柄的函数监视进程数组中所有进程句柄,判断是否有进程句柄退出;B2、根据退出的进程句柄得到与其相对应下标,将该下标返回给等待多对象函数,进而得到退出的进程句柄;B3、通过进程句柄与绝对路径对应关系的列表找到与该退出的进程句柄相对应的可执行文件的绝对路径,将该绝对路径作为一个参数送给进程创建函数,重新启动并运行此后台程序。
应用本发明,只需针对每种操作系统开发一个监控工具软件,即可实现对任何需要监视的后台程序进行监控,不需增加任何成本,即可有效提高后台程序运行的可靠性,为用户提供持续有效的服务。本发明的方法简单实用,可操作性好,可适用于多种操作系统。


图1用户定义的后台程序的可执行文件名以及这些文件的绝对路径的列表;图2后台程序文件的进程句柄与该文件的绝对路径对应关系的列表;图3进程数组示意图;图4为监控工具得到需要监控的后台程序的可执行文件名以及这些文件的绝对路径流程图;图5为通过监控工具监控用户定义的后台程序并重新启动已退出的后台程序的流程图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
本实施例以Windows操作系统为例。
在实施监控之前,用户建立一个初始化文件,在该文件中设置需要监视的后台程序的可执行文件名以及这些文件的绝对路径,其对应关系如图1所示,后台程序的可执行文件名与该文件的绝对路径一一对应,以保证在监控工具启动时,从该初始化文件中可读取到需要监视的后台程序文件的绝对路径,并保存在字符串数组中。
监控过程如下,首先,从系统运行的所有后台程序中得到用户定义的需要监视的后台程序的可执行文件名及其绝对路径,将得到的要监视的后台程序的可执行文件名保存在进程句柄(在程序运行期间,操作系统将为每一个后台程序文件分配一个唯一的进程号,即每一个后台程序文件都将得到一个进程的标识符,这种标识符在Windows操作系统下称之为进程句柄,是一个HANDLE类型的值)与绝对路径映射的数组中,进程句柄与绝对路径的对应关系如图2所示的列表,该列表保存在系统的内存中;将要监视的后台程序文件的绝对路径保存为进程数组,如图3所示进程数组示意图,数组的元素值为进程句柄,数组下标为需要监控的文件名在数组中的位置。
这样,需要监视的后台程序的可执行文件名、绝对路径以及该后台程序的进程句柄便形成一一对应关系。
其次,在CreateThread()函数创建的子线程里,监控工具监控后台程序文件,如果后台程序产生错误退出,则自动重新启动该退出的后台程序。
具体过程如下如图4所示监控工具得到需要监控的后台程序可执行文件的文件名以及这些文件的绝对路径的流程图步骤401,调用GetFileNameFromInitFile()函数从初始化文件中获取需要监视的后台程序可执行文件的绝对路径,并保存在内存中;步骤402,调用EnumProcess()函数得到系统中当前运行的所有进程句柄;步骤403,通过应用程序编程接口(API)遍历系统中的每个进程;步骤404,调用EnumProcessModules()函数,得到进程中的所有模块句柄;步骤405,通过API遍历进程中的每个模块;步骤406,调用GetModuleFileNameEx()函数,得到系统中每个模块的可执行文件名及其绝对路径。
步骤407,用上一步得到的系统中当前运行进程中的每个模块的可执行文件的绝对路径与用户自己定义的需要监视的后台程序文件的绝对路径进行对比;如果相同则执行步骤409,将后台程序的绝对路径保存在需要监视的进程数组中;执行步骤410,将后台程序的可执行文件名保存在进程句柄与绝对路径映射的数组中,否则执行步骤408,执行空操作跳过。
步骤411,判断上述对比是否完毕,如果是执行步骤412,否则执行步骤107继续对比。
步骤412,判断用户定义的需要监视的后台程序是否全部正在运行,如果是则结束,否则执行步骤413;步骤413,将没有运行的后台程序的绝对路径作为参数给CreateProcess()函数,启动并运行这些后台程序;步骤414,将后台程序的绝对路径保存在需要监控的进程数组中;步骤415,将后台程序的可执行文件名保存在进程句柄与绝对路径映射的数组中。
如图5所示通过监控工具监视用户定义的后台程序并重新启动退出的后台程序的流程图步骤501,利用WaitForMultipleObjects()函数监视进程数组中所有进程句柄;步骤502,判断是否有进程退出;如果是执行步骤503,根据退出的进程句柄得到与其相对应的下标,将该下标返回给WaitForMultipleObjects()函数,进而得到退出的进程句柄,再通过进程句柄与绝对路径的对应关系找到该退出的进程句柄的可执行文件的绝对路径;否则重复执行步骤502;步骤504,将该绝对路径作为一个参数送给CreateProcess()函数,重新启动并运行此后台程序;步骤505,将操作系统返回的新进程句柄替换进程数组中该退出的后台程序的进程句柄,继续接受WaitForMultipleObjects()函数的监视。
UNIX操作系统或其它操作系统的监控方法类似。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种对后台程序进行监控的方法,其特征在于该方法包括以下步骤A、定义需要监视的后台程序的可执行文件名及其相对应的绝对路径,并将与绝对路径相对应的进程句柄作为元素值保存在进程数组中,同时,将绝对路径与文件名的对应关系保存在系统内存中;B、用监视函数监视进程数组的元素值,当被监视的后台程序发生异常退出时,根据进程数组下标所对应的数组元素值得到退出的后台程序的进程句柄,再根据进程句柄与绝对路径的对应关系得到该后台程序的可执行文件的绝对路径,重新启动运行此后台程序,将操作系统返回该后台程序的新进程句柄,替换进程数组中该退出的后台程序的进程句柄,继续接受监视。
2.根据权利要求1所述的一种对后台程序进行监控的方法,其特征在于,所述的步骤A进一步包括A1、在与监控工具同一目录下建立一个初始化文件,并在该文件中,设置用户要求监视的后台程序的可执行文件名及其绝对路径;A2、从初始化文件获取文件名和绝对路径,并将之保存在系统内存中;A3、获取当前系统运行中的所有程序的进程的句柄及其绝对路径;A4、将步骤A3中获取的绝对路径与步骤A2中获取的需监视的后台程序的绝对路径相比较,如相同则将该绝对路径对应的进程句柄作为元素值保存在进程数组中,如不同则放弃;A5、判断初始化文件中,用户要求监视的后台程序是否全部正在运行,如果是则结束,否则执行步骤A6;A6、将没有运行的后台程序的可执行文件的绝对路径,作为参数送给进程创建函数,启动并运行这些后台程序;A7、将步骤A6中启动并运行的后台程序的绝对路径的进程句柄作为元素值保存在进程数组中。
3.根据权利要求2所述的一种对后台程序进行监控的方法,其特征在于,所述的步骤A3进一步包括A31、调用获取进程函数得到系统中当前运行的所有进程句柄;A32、调用获取模块文件名的函数得到系统中当前运行的所有模块句柄;A33、调用获取模块可执行文件名函数得到所有程序的每个进程中的每个模块的可执行文件名及其绝对路径。
4.根据权利要求1所述的一种对后台程序进行监控的方法,其特征在于,所述的步骤B进一步包括在由线程创建函数创建的子线程中,使用监视函数对后台程序进行监控。
5.根据权利要求1所述的一种对后台程序进行监控的方法,其特征在于,所述的步骤B进一步包括B1、调用监视进程句柄的函数监视进程数组中所有进程句柄,判断是否有进程退出;B2、根据退出的进程句柄得到与其相对应下标,该下标被返回给等待多对象函数,进而得到退出的进程句柄;B3、通过进程句柄与绝对路径对应关系的列表找到与该退出的进程句柄相对应的可执行文件的绝对路径,将该绝对路径作为一个参数送给进程创建函数,重新启动并运行此后台程序。
全文摘要
本发明提供了一种对后台程序进行监控的方法,该方法包括以下步骤定义需要监控后台程序的可执行文件名及其相对应的绝对路径,将进程句柄数组、绝对路径与文件名的对应关系保存在系统内存中;用监视函数监视进程数组的元素值,当被监视的后台程序发生异常退出时,根据进程数组下标所对应的数组元素值得到退出的后台程序的进程句柄,再根据该进程句柄得到该后台程序的可执行文件的绝对路径,重新启动运行此后台程序,将操作系统返回的后台程序的新进程句柄替换进程数组中该退出的后台程序的进程句柄,继续接受监视。应用本发明可在不增加成本的前提下,解决后台程序运行时的可靠性问题。
文档编号G06F11/30GK1489049SQ0213085
公开日2004年4月14日 申请日期2002年10月11日 优先权日2002年10月11日
发明者李刚, 杨小桐, 隆承志, 张建胜, 戴玉宏, 邹勇, 刚 李 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1