一种基于命令行的应用进程守护方法与流程

文档序号:17287668发布日期:2019-04-03 03:41阅读:250来源:国知局
一种基于命令行的应用进程守护方法与流程

本发明涉及一种基于命令行的应用进程守护方法。



背景技术:

在工业领域,尤其是在电力行业,为确保运行设备的安全稳定运行,现场的大部分应用软件都需要长期不间断运行,一旦因异常或人为原因退出,也要求在很短的时间里恢复,仅仅依靠软件自身的稳定性是无法做到的,必须依赖外部的守护进程方能满足这一要求。

现有的进程守护方法主要分为两大类:基于进程名和基于pid(进程标识符)的守护方法。其中,基于进程名的守护方法因进程名不具唯一性而难以应用于存在相同进程名的场合,如用java编程语言开发的应用程序的进程名均为java;而基于pid的守护方法可以用于守护所有应用程序,但由于pid的可变性和不可预知性,只能在应用程序启动之后将自身pid作为参数传递给守护进程方能实现守护,采用该方法,守护进程和应用进程之间具有很强的耦合关系,无法做到相互独立,而且一个守护进程只能守护一个应用进程。



技术实现要素:

针对上述问题,本发明提供一种基于命令行的应用进程守护方法,利用进程命令行的唯一性和不变性实现守护进程和被守护进程的“松耦合,一对多”的守护模式,使得守护进程可用于守护包括java程序在内的所有应用程序,具有较强的通用性、可配置性和可扩展性。

为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种基于命令行的应用进程守护方法,包括如下步骤:

步骤1、配置应用进程运行时的命令行;

步骤2、解析配置,读取已配置应用进程的命令行,将所有应用进程的命令行,记作集合a;

步骤3、当系统运行时,获取系统所有运行的进程信息,提取系统中所有运行的进程的命令行,记作集合b;

步骤4、遍历集合a中的每一个命令行,对于每一个命令行,当集合b中不存在该命令行时,则立即运行该命令行,启动其对应的程序。

优选,步骤4具体包括如下步骤:

步骤401、初始化:令进程序号k=1,应用进程数量n=size(a);

步骤402、对于集合a中的第k个命令行ak做如下处理:

如果则立即运行该命令行,启动其对应的程序,并进入步骤403;

如果ak∈b,则直接进入步骤403;

步骤403、判断k是否等于n,若k=n,则进入休眠状态,否则,令k的值加1并进入步骤402。

优选,休眠设定的时间后进入步骤3。

优选,休眠时间≥5s。

优选,休眠时间为5-30s。

优选,步骤1中,配置的命令行是按行配置,且包含应用程序的全路径;如果有启动参数,则配置对应的启动参数。

本发明的有益效果是:

本发明提供的一种基于命令行的应用进程守护方法,利用进程命令行的唯一性和不变性,可以有效解决现有守护方法难以应用于存在相同进程名的场合、存在守护死角和无法同时守护多个应用进程的问题;同时,守护进程具有很强的可配置性和可扩展性,也使得守护进程和应用进程的开发和维护相互独立,降低了开发维护成本,具有很高的实用价值。

附图说明

图1是本发明一种基于命令行的应用进程守护方法的流程图。

具体实施方式

下面结合附图和具体的实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

如图1所示,一种基于命令行的应用进程守护方法,包括如下步骤:

步骤1、配置应用进程运行时的命令行;

步骤2、解析配置,读取已配置应用进程的命令行,将所有应用进程的命令行,记作集合a;

步骤3、当系统运行时,获取系统所有运行的进程信息,提取系统中所有运行的进程的命令行,记作集合b;

步骤4、遍历集合a中的每一个命令行,对于每一个命令行,当集合b中不存在该命令行时,则立即运行该命令行,启动其对应的程序。

一般的,按配置顺序对各应用进程进行轮检、启动或守护。优选,步骤4具体包括如下步骤:

步骤401、初始化:令进程序号k=1,应用进程数量n=size(a),size函数用于求取集合a的元素个数;

步骤402、对于集合a中的第k个命令行ak做如下处理:

如果说明第k个待守护的进程不存在于当前运行系统中,其不在运行状态,则立即运行该命令行,启动其对应的程序,并进入步骤403;

如果ak∈b,说明第k个应用进程已存在于当前运行系统中,其处于运行状态,则直接进入步骤403;

步骤403、判断k是否等于n,若k=n,则进入休眠状态,否则,令k的值加1并进入步骤402。

优选,休眠设定的时间后进入步骤3,比如,休眠时间≥5s,可以设定为5-30s,即一次轮检结束后休眠5-30s,然后进入下一个守护周期,可降低守护进程的系统资源占用率。

步骤1中,配置的命令行是按行配置,且包含应用程序的全路径;如果有启动参数,则配置对应的启动参数。配置的命令行数量不受限制,使得一个守护进程可以同时对多个应用进程进行守护,即“一对多”守护模式。

本发明的一种基于进程命令行的应用进程守护方法,主要用于解决现有守护方法难以应用于存在相同进程名的场合和无法同时守护多个应用进程的问题。本发明根据所配置应用程序命令行的唯一性和不变性来判断应用程序是否处于运行状态,并实现应用进程的长期持续运行,其中,可守护的应用进程数量不受限制,有效突破了常规守护方法中守护进程和应用进程“一对一,紧耦合”的守护模式,实现了“一对多,松耦合”的守护模式,具有较强的通用性、可配置性和扩展性。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。



技术特征:

技术总结
本发明公开了一种基于命令行的应用进程守护方法,包括如下步骤:步骤1、配置应用进程运行时的命令行;步骤2、解析配置,读取已配置应用进程的命令行,将所有应用进程的命令行,记作集合A;步骤3、当系统运行时,获取系统所有运行的进程信息,提取系统中所有运行的进程的命令行,记作集合B;步骤4、遍历集合A中的每一个命令行,对于每一个命令行,当集合B中不存在该命令行时,则立即运行该命令行,启动其对应的程序。利用进程命令行的唯一性和不变性实现守护进程和被守护进程的“松耦合,一对多”的守护模式,使得守护进程可用于守护包括java程序在内的所有应用程序,具有较强的通用性、可配置性和可扩展性。

技术研发人员:刘青红;葛立青;徐浩;翟剑华;唐孝舟
受保护的技术使用者:南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司
技术研发日:2017.09.26
技术公布日:2019.04.02
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1