CN108845875B - 一种常驻进程保活系统以及方法 - Google Patents
一种常驻进程保活系统以及方法 Download PDFInfo
- Publication number
- CN108845875B CN108845875B CN201810746404.3A CN201810746404A CN108845875B CN 108845875 B CN108845875 B CN 108845875B CN 201810746404 A CN201810746404 A CN 201810746404A CN 108845875 B CN108845875 B CN 108845875B
- Authority
- CN
- China
- Prior art keywords
- resident
- resident process
- script
- execution module
- lock
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种常驻进程保活系统以及方法,其中,该系统包括:守护进程执行模块,用于周期性获取需要保活的常驻进程脚本的标识信息,并根据标识信息向锁管理进程执行模块发送加锁请求;在接收到锁管理进程执行模块根据加锁请求反馈的加锁成功信息后,触发系统内核基于常驻进程脚本创建对应的常驻进程;在接收到锁管理进程执行模块根据加锁请求反馈的加锁失败信息后,确定常驻进程为存活状态;锁管理进程执行模块,用于在接收到加锁请求后,根据加锁请求检测与常驻进程脚本对应的锁文件是否存在;若否则创建锁文件,并向守护进程执行模块反馈加锁成功信息;若是则向守护进程执行模块反馈加锁失败信息。该系统能够保证常驻进程不会失去控制。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种常驻进程保活系统以及方法。
背景技术
脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支。脚本按照触发时机分为定时脚本和常驻进程脚本;其中,定时脚本指需要在特定时间被执行的脚本;常驻进程脚本则是需要一直被执行的脚本。常驻进程脚本在执行时,会在执行的常驻进程脚本的设备内核中生成与脚本对应的常驻进程;为了实现常驻进程能够一直在内核中运行,也即实现常驻进程的保活,当前一般使用管理员Supervisor软件对常驻进程进行管理。
Supervisor软件是一种能够用在类UNIX系统上的一种进程控制软件;Supervisor软件的主程序通过创建子进程来实现对常驻进程的管理。为了实现对常驻进程的管理,子进程在开始执行常驻进程脚本时,会生成一与常驻进程对应的进程标识(ProcessIdentification,PID)文件,并将常驻进程的身份标识保存在该PID文件中,当常驻进程本关闭时,与常驻进程对应的PID文件会被删除;这种常驻进程保活方法容易导致常驻进程失去控制。
发明内容
有鉴于此,本申请实施例的目的在于提供一种常驻进程保活系统以及方法,能够保证常驻进程不会失去控制。
第一方面,本申请实施例提供了一种常驻进程保活系统,该系统包括:守护进程执行模块以及锁管理进程执行模块;
所述守护进程执行模块,用于周期性获取需要保活的常驻进程脚本的标识信息,并根据所获取的所述常驻进程脚本的标识信息,向所述锁管理进程执行模块发送加锁请求;以及,在接收到所述锁管理进程执行模块根据所述加锁请求反馈的加锁成功信息后,触发系统内核基于所述常驻进程脚本创建对应的常驻进程;在接收到所述锁管理进程执行模块根据所述加锁请求反馈的加锁失败信息后,确定所述常驻进程为存活状态;
所述锁管理进程执行模块,用于在接收到所述守护进程执行模块发送的加锁请求后,根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在;若否,则创建所述锁文件,并向所述守护进程执行模块反馈加锁成功信息;若是,则向所述守护进程执行模块反馈加锁失败信息。
第二方面,本申请实施例还提供一种常驻进程保活方法,该方法包括:
守护进程周期性获取需要保活的常驻进程脚本的标识信息,并根据所获取的所述常驻进程脚本的标识信息,向锁管理进程发送加锁请求;
锁管理进程在接收到所述守护进程发送的加锁请求后,根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在;若否,则创建所述锁文件,并向所述守护进程反馈加锁成功信息;若是,则向所述守护进程反馈加锁失败信息;
若守护进程接收到所述锁管理进程反馈的加锁成功信息,则触发系统内核基于所述常驻进程脚本创建对应的常驻进程,若守护进程接收到所述锁管理进程反馈的加锁失败信息,则确定所述常驻进程为存活状态。
第三方面,本申请实施例还提供一种计算机设备,所述计算机设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行上述计算机程序时实现如权利要求6-8任意一项所述的常驻进程保活方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述权利要求5-8任意一项所述的常驻进程保活方法。
本申请实施例提供的常驻进程保活系统中,守护进程执行模块会周期性的获取需要包好的常驻进程脚本的标识信息,并根据常驻进程脚本的标识信息,向锁管理进程执行模块发送加锁请求。锁管理进程执行模块在接收到加锁请求后,会根据加锁请求检测与常驻进程脚本对应的锁文件是否存在,若存在则向守护进程执行模块反馈加锁失败信息;若不存在则创建锁文件,并向守护进程执行模块反馈加锁成功信息。守护进程执行模块若接收到加锁成功信息后,会直接触发系统内核基于常驻进程脚本创建对应的常驻进程,若接收到加锁失败信息后,就能够确定常驻进程为存活状态,在该过程中,由于锁管理进程执行模块本身是系统内核的一部分,其所生成的锁文件在一般情况下是不允许被删除的,锁文件能够随着常驻进程的创建而生成,并随着常驻进程的关闭而消亡,因此不会存在锁文件被删除而对应的常驻进程还在运行的情况,以保证常驻进程不会失控。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种常驻进程保活系统的结构示意图;
图2示出了本申请实施例所提供的另一种常驻进程保活系统的结构示意图;
图3示出了本申请实施例所提供的一种常驻进程保活方法的流程图;
图4示出了本申请实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前常驻进程脚本的保活通常依赖于Supervisor软件。在使用Supervisor软件进行常驻进程保护的时候,Supervisor主进程会生成一用于执行常驻进程保活的管理子进程;该管理子进程在开始执行常驻进程脚本的时候,会生成一个与该常驻进程脚本对应的PID文件,在该PID文件中保存了执行常驻进程脚本时所生成的常驻进程的身份标识;当常驻进程被关闭时,该PID文件会被关闭;常驻进程的关闭受到管理子进程的控制。采用Supervisor软件容易导致常驻进程失去控制。这是由于:
其一:假若与常驻进程对应的PID文件被误删除,管理子进程由于找不到PID文件,会认为常驻进程被关闭,从而会重新打开与常驻进程对应的常驻进程脚本,生成新的PID文件,以及生成新的常驻进程;原来的常驻进程就会失去控制。
原来的常驻进程失去控制会导致多种问题。例如,若某业务不再需要执行常驻进程,需要将该常驻进程停止;但是由于原来的常驻进程的PID文件被删除,管理子进程已经无法通过PID文件找到原来的常驻进程,进而其也无法控制原来的常驻进程的关闭,会导致原来的常驻进程无法在需要的时候被关闭;又例如,若常驻进程对应的常驻进程脚本在某一时刻被更新;需要将该常驻进程停止后重新开启,以执行更新后的常驻进程脚本,但是由于原来的常驻进程的PID文件被删除,管理子进程已经无法通过PID文件找到原来的常驻进程,进而其也无法控制原来的常驻进程的关闭,因而业务逻辑一直会按照原来的常驻进程脚本执行,而不能按照更新后的常驻进程脚本执行。
其二,假若常驻进程被误杀,但是由于常驻进程并非是通过正常途径关闭的,此时与该常驻进程对应的PID文件依然存在;管理子进程由于能够检测到PID文件,会认为常驻进程依然在设备内核中运行,从而对常驻进程失去控制,造成常驻进程实际上已经不存在,影响与常驻进程有关系的业务执行。
其三:Supervisor软件的主进程也是一个常驻进程,其在检测到管理子进程停止后,或重新启动管理子进程,其会生成PID文件用于保存管理子进程的识别标识;当Supervisor软件的主进程异常关闭后,会导致原来的管理子进程失去控制,从而无法保证稳定守护管理子进程。
基于此,本申请提供的一种常驻进程保活系统以及方法,可以保证常驻进程不会失去控制。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种常驻进程保活系统进行详细介绍。该方法的执行主体为计算机设备的系统内核。
参见图1所示,本申请实施例提供的常驻进程保活系统包括:守护进程执行模块10以及锁管理进程执行模块20。
其中,所述守护进程执行模块10,用于周期性获取需要保活的常驻进程脚本的标识信息,并根据所获取的所述常驻进程脚本的标识信息,向所述锁管理进程执行模块发送加锁请求;以及,在接收到所述锁管理进程执行模块20根据所述加锁请求反馈的加锁成功信息后,触发系统内核基于所述常驻进程脚本创建对应的常驻进程;在接收到所述锁管理进程执行模块根据所述加锁请求反馈的加锁失败信息后,确定所述常驻进程为存活状态;
所述锁管理进程执行模块20,用于在接收到所述守护进程执行模块10发送的加锁请求后,根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在;若否,则创建所述锁文件,并向所述守护进程执行模块反馈加锁成功信息;若是,则向所述守护进程执行模块反馈加锁失败信息。
在具体实现的时候,守护进程执行模块10和锁管理进程执行模块20实际上都是系统内核中的一部分。守护进程执行模块10通过周期性执行守护脚本来实现对常驻进程的保活,该周期可以根据实际的需要进行具体设定,例如将周期设定为1分钟、2分钟、……10分钟等。为了周期性执行守护脚本,守护进程执行模块10会设置有定时器;该定时器会计时;守护进程执行模块10能够捕捉到计时器的计时;当计时器计时到预设时间后,守护进程执行脚本10开始执行守护脚本,并将计时器的计时清零。守护脚本在被执行的时候,系统内核会生成对应的守护进程;当守护进程执行完本周期的工作后,会被关闭;等到计时器再次及时到预设时间后,守护脚本再次被执行。因此,守护执行模块10所执行的常驻进程保活过程,实际上可以看作是守护进程在执行常驻进程保活的过程。
守护进程首先会获取需要保活的常驻进程脚本的标识信息。此处,需要保活的常驻进程脚本的标识信息可以保存在守护脚本中,守护进程脚本在被执行的时候,守护进程脚本会被加载,因而常驻进程能够从加载的守护进程脚本中读取到要保活的常驻进程脚本的标识信息。在该种标识信息的读取方式中,由于常驻进程脚本可能会有增添或者减少,每次当有常驻进程脚本被增添或者减少时,都需要对守护脚本进行修改。
为了避免常驻进程脚本被增添或者减少时,都需要对守护脚本进行修改,常驻进程脚本的标识信息还可以作为一个单独的标识文件进行保存;在守护进程脚本中写有读取该标识文件的代码,用于读取该标识文件中所保存的常驻进程脚本的标识信息。在需要对常驻进程脚本进行增添或者减少时,只需要在标志文件中增加需要增添的常驻进程脚本的标识信息,或者在标志文件中删除需要减少的常驻进程脚本的标识信息即可。
常驻进程脚本的标识信息,通常是常驻进程脚本的完整路径;完整路径包括了常驻进程脚本的名称和访问路径;保活进程在获取了常驻进程脚本的标识信息后,能够通过该标识信息获取到常驻进程脚本具体的存储文位置,从而能够执行后续的工作。
守护进程在读取了某常驻进程脚本的标识信息后,根据该常驻进程脚本的标识信息获取到常驻进程脚本,然后根据标识信息向锁管理进程执行模块20发送加锁请求。
例如守护进程可以通过调用系统函数flock–xn,以尝试生成常驻进程脚本的锁文件。
具体地,守护进程执行模块10,具体用于通过下述步骤根据所获取的所述常驻进程脚本的标识信息,向所述锁管理进程执行模块发送加锁请求:
根据所述标识信息,按照预设的生成规则,生成与所述常驻进程脚本对应的锁文件的保存路径以及锁文件名称;生成所述加锁请求;所述加锁请求中携带所述保存路径以及所述锁文件名称;将所述加锁请求发送给所述锁管理进程执行模块。
此处,守护进程在向锁管理进程执行模块20发送加锁请求之前,要根据常驻进程脚本的标识信息生成与常驻进程脚本对应的加锁请求。该加锁请求中,携带有与常驻进程脚本对应的锁文件的标识信息。锁文件的标识信息是由守护进程根据常驻进程脚本的标识信息生成的。例如,锁文件的标识信息是按照预设的生成规则生成的锁文件的保存路径以及文件名称,其文件名称通常与常驻进程脚本的标识信息相关,能够和一个常驻进程脚本唯一对应。
守护进程在生成加锁请求后,将该加锁请求发送给锁管理进程执行模块20。
锁管理进程执行模块20运行有锁管理进程。例如,当守护进程通过调用系统函数flock–xn,以尝试生成常驻进程脚本的锁文件时,锁管理进程执行模块20是系统函数flock–xn真正的执行者;锁管理进程执行模块20所执行的工作,可以被看作是锁管理进程执行的工作。守护进程执行模块10和锁管理进程执行模块20之间的通信,实际上可以看作是守护进程和所管理进程之间的进程通信。
锁管理进程在接收到加锁请求后,会根据加锁请求检测与常驻进程脚本对应的锁文件是否存在。
具体地,由于加锁请求中携带了锁文件的保存路径和文件名称,因此,锁管理进程首先会根据锁文件的保存路径,确定与该保存路径对应的存储位置,并在所确定的存储位置查找是否存在与加锁请求中的锁文件名称一致的锁文件;如果存在,则认为存在与常驻进程脚本对应的锁文件,此时,锁管理进程会直接向守护进程反馈加锁失败信息,以通知守护进程当前常驻进程脚本对应的常驻进程还在运行中;如果不存在,则认为不存在与常驻进程脚本对应的锁文件,此时锁管理进程会根据加锁请求中携带的锁文件的保存路径和文件名称,在与保存路径对应的存储位置创建文件名称和加锁请求中携带的文件名称一致的锁文件,从而生成常驻进程脚本的锁文件,并向守护进程执行模块反馈加锁成功信息,以通知守护进程当前常驻进程脚本对应的常驻进程已经停止了运行。
守护进程在接收到锁管理进程反馈的加锁失败信息后,会确定当前常驻进程脚本的常驻进程为存货状态,并跳过对当前常驻进程脚本打开的过程,接着尝试对下一个常驻进程脚本进行加锁,直至所有需要保活的常驻进程脚本都被尝试加锁后,完成本周期的常驻进程保活过程。
守护进程在接收到锁管理进程反馈的加锁成功信息后,会启动该常驻进程脚本,也即触发系统内核基于常驻进程脚本创建对应的常驻进程,实现常驻进程的保活。
在本申请另一实施例中,参见图2所示,还包括:常驻进程监测进程执行模块30,用于对所述常驻进程的运行状态进行监测,以及在监测到所述常驻进程的运行结束后,向所述锁管理进程执行模块20发送锁文件释放指令;
所述锁管理进程执行模块20,还用于在接收到常驻进程监测进程执行模块30发送饿锁文件释放指令后,将所述常驻进程对应的锁文件删除。
在具体实现的时候,常驻进程监测进程执行模块30也是系统内核中的一部分,其用于对当前系统内核中运行的所有进程的状态进程监测。当系统内核中运行的任意一个进程关闭时,无论是被外界关闭,还是自杀式的关闭,常驻进程监测进程执行模块30都能够监测到。当常驻进程监测进程执行模块30检测到常驻进程的运行结束后,会向锁管理进程执行模块20发送锁文件释放指令。
这里需要注意的是,常驻进程脚本、锁文件以及对应的常驻进程是有一一对应关系的;因此锁管理进程执行模块20在接收到锁文件释放指令后,能够根据将于常驻进程对应的锁文件删除。
在本申请另一实施例中,参见图2所示,还包括:常驻进程执行模块40,用于执行所述系统内核创建的所述常驻进程;以及在执行所述常驻进程完成一个业务周期后,获取与所述常驻进程对应的常驻进程脚本;将获取的常驻进程脚本与所述常驻进程创建时所加载的常驻进程脚本进行比对;在两者不一致时,关闭所述常驻进程。
在具体实现的时候,会遇到常驻进程脚本更新的情况。在常驻进程脚本被更新后,要求常驻进程按照更新后的常驻进程脚本来执行业务;因此,这就要求当常驻进程脚本更新后,常驻进程关闭后重启;重启后的常驻进程会加载更新后的常驻进程脚本,会按照更新后的常驻进程脚本来执行业务。
因此需要常驻进程执行模块40在执行系统内核创建的常驻进程,并且没完成一个业务周期后,都需要检测与常驻进程对应的常驻进程脚本是否有更新,如果有更新,则关闭常驻进程,使得守护进程执行模块能够对常驻进程进行重启;当常驻进程重启后,所加载的常驻进程脚本就是更新后的常驻进程脚本,因而能够按照更新后的常驻进程脚本来执行业务。
例如,可以将常驻进程的启动对象设置为一个bootstrap引导框架,该框架在常驻进程每次执行完业务操作之后,对已经加载的常驻进程脚本和常驻进程对应的常驻进程脚本进行代码的MD5比对,若常驻进程对应的常驻进程脚本有变更,则结束常驻进程;常驻进程结束之后,flock创建的文件锁将被释放,下次定时器触发守护进程执行进程保活过程的时候,该常驻进程会被重启。
此外,需要注意的是,当业务出现错误的时候,需要将常驻进程关闭后重启业务逻辑,以实现将错误数据进行清理。为了实现上述目的,在常驻进程脚本中还编写有相关代码;能够在业务出现错误的时候,指示常驻进程将自身关闭。下次定时器触发守护进程执行进程保活过程的时候,该常驻进程会被重启。
本申请实施例提供的常驻进程保活系统中,守护进程执行模块会周期性的获取需要包好的常驻进程脚本的标识信息,并根据常驻进程脚本的标识信息,向锁管理进程执行模块发送加锁请求。锁管理进程执行模块在接收到加锁请求后,会根据加锁请求检测与常驻进程脚本对应的锁文件是否存在,若存在则向守护进程执行模块反馈加锁失败信息;若不存在则创建锁文件,并向守护进程执行模块反馈加锁成功信息。守护进程执行模块若接收到加锁成功信息后,会直接触发系统内核基于常驻进程脚本创建对应的常驻进程,若接收到加锁失败信息后,就能够确定常驻进程为存活状态,在该过程中,由于锁管理进程执行模块本身是系统内核的一部分,其所生成的锁文件在一般情况下是不允许被删除的,锁文件能够随着常驻进程的创建而生成,并随着常驻进程的关闭而消亡,因此不会存在锁文件被删除而对应的常驻进程还在运行的情况,以保证常驻进程不会失控。
同时,常驻进程一旦被关闭,与常驻进程对应的锁文件会被删除;由于守护进程执行模块能够周期性的执行常驻进程保活的过程,因此常驻进程脚本会在下个周期被重新执行,实现了常驻进程的保活。
另外,当守护进程执行模块在执行常驻进程保活的过程中遇到未能捕获的异常时,还可以记录日志并且退出,在下一个周期会进行重试;如果在下一个周期之前异常已经被修正,则可以继续使得常驻进程保活;如果在下一个周期之前异常还存在,则再次退出,不会由于常驻进程频繁重启造成的下游服务雪崩的情况。
基于同一发明构思,本申请实施例中还提供了与常驻进程保活系统对应的常驻进程保活方法,由于本申请实施例中的装置解决问题的原理与本申请实施例上述常驻进程保活系统相似,因此方法的实施可以参见方法的实施,重复之处不再赘述。
参见图3所示,本申请实施例提供的常驻进程保活方法包括:
S301:守护进程周期性获取需要保活的常驻进程脚本的标识信息,并根据所获取的所述常驻进程脚本的标识信息,向锁管理进程发送加锁请求;
S302:锁管理进程在接收到所述守护进程发送的加锁请求后,根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在;若否,则创建所述锁文件,并向所述守护进程反馈加锁成功信息;若是,则向所述守护进程反馈加锁失败信息;
S303:若守护进程接收到所述锁管理进程反馈的加锁成功信息,则触发系统内核基于所述常驻进程脚本创建对应的常驻进程,若守护进程接收到所述锁管理进程反馈的加锁失败信息,则确定所述常驻进程为存活状态。
本申请实施例提供的常驻进程保活方法中,守护进程会周期性的获取需要包好的常驻进程脚本的标识信息,并根据常驻进程脚本的标识信息,向锁管理进程发送加锁请求。锁管理进程在接收到加锁请求后,会根据加锁请求检测与常驻进程脚本对应的锁文件是否存在,若存在则向守护进程反馈加锁失败信息;若不存在则创建锁文件,并向守护进程反馈加锁成功信息。守护进程若接收到加锁成功信息后,会直接触发系统内核基于常驻进程脚本创建对应的常驻进程,若接收到加锁失败信息后,就能够确定常驻进程为存活状态,在该过程中,由于锁管理进程本身是系统内核的一部分,其所生成的锁文件在一般情况下是不允许被删除的,锁文件能够随着常驻进程的创建而生成,并随着常驻进程的关闭而消亡,因此不会存在锁文件被删除而对应的常驻进程还在运行的情况,以保证常驻进程不会失控。
可选地,所述根据所获取的所述常驻进程脚本的标识信息,向锁管理进程发送加锁请求,具体包括:
根据所述标识信息,按照预设的生成规则,生成与所述常驻进程脚本对应的锁文件的保存路径以及锁文件名称;
生成所述加锁请求;所述加锁请求中携带所述保存路径以及所述锁文件名称;
将所述加锁请求发送给所述锁管理进程;
所述根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在,具体包括:
根据所述保存路径,确定与所述保存路径对应的存储位置,并在所述存储位置查找是否存在与所述加锁请求中携带的锁文件名称一致的锁文件。
可选地,还包括:
常驻进程监测进程对所述常驻进程的运行状态进行监测,并在监测到所述常驻进程的运行结束后,向所述锁管理进程发送锁文件释放指令;
所述锁管理进程在接收到常驻进程监测进程执行模块发送饿锁文件释放指令后,将所述常驻进程对应的锁文件删除。
可选地,还包括:
常驻进程执行所述系统内核创建的所述常驻进程;以及在执行所述常驻进程完成一个业务周期后,获取与所述常驻进程对应的常驻进程脚本;将获取的常驻进程脚本与所述常驻进程创建时所加载的常驻进程脚本进行比对;在两者不一致时,关闭所述常驻进程。
对应于图3中的常驻进程保活方法,本申请实施例还提供了一种计算机设备,如图4所示,该设备包括存储器41、处理器42及存储在该存储器41上并可在该处理器42上运行的计算机程序,其中,上述处理器42执行上述计算机程序时实现上述常驻进程保活方法的步骤。
具体地,上述存储器41和处理器42能够为通用的存储器和处理器,这里不做具体限定,当处理器42运行存储器41存储的计算机程序时,能够执行上述常驻进程保活方法,从而解决使用管理员Supervisor软件对常驻进程进行管理所存在容易对常驻进程失去控制的问题,进而达到保证常驻进程不会失去控制的效果。
对应于图3中的常驻进程保活方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述常驻进程保活方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述常驻进程保活方法,从而解决使用管理员Supervisor软件对常驻进程进行管理所存在容易对常驻进程失去控制的问题,进而达到保证常驻进程不会失去控制的效果。
本申请实施例所提供的常驻进程保活系统以及方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种常驻进程保活系统,其特征在于,该系统包括:守护进程执行模块以及锁管理进程执行模块;
所述守护进程执行模块,用于周期性获取需要保活的常驻进程脚本的标识信息,并根据所获取的所述常驻进程脚本的标识信息,向所述锁管理进程执行模块发送加锁请求;以及,在接收到所述锁管理进程执行模块根据所述加锁请求反馈的加锁成功信息后,触发系统内核基于所述常驻进程脚本创建对应的常驻进程;在接收到所述锁管理进程执行模块根据所述加锁请求反馈的加锁失败信息后,确定所述常驻进程为存活状态;
所述锁管理进程执行模块,用于在接收到所述守护进程执行模块发送的加锁请求后,根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在;若否,则创建所述锁文件,并向所述守护进程执行模块反馈加锁成功信息;若是,则向所述守护进程执行模块反馈加锁失败信息;
所述守护进程执行模块,具体用于通过下述步骤根据所获取的所述常驻进程脚本的标识信息,向所述锁管理进程执行模块发送加锁请求:
根据所述标识信息,按照预设的生成规则,生成与所述常驻进程脚本对应的锁文件的保存路径以及锁文件名称;
生成所述加锁请求;所述加锁请求中携带所述保存路径以及所述锁文件名称;
将所述加锁请求发送给所述锁管理进程执行模块;
所述锁管理进程执行模块,具体用于通过下述步骤根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在:
根据所述保存路径,确定与所述保存路径对应的存储位置,并在所述存储位置查找是否存在与所述加锁请求中携带的锁文件名称一致的锁文件。
2.根据权利要求1所述的系统,其特征在于,还包括:常驻进程监测进程执行模块,用于对所述常驻进程的运行状态进行监测,以及在监测到所述常驻进程的运行结束后,向所述锁管理进程执行模块发送锁文件释放指令;
所述锁管理进程执行模块,还用于在接收到常驻进程监测进程执行模块发送的锁文件释放指令后,将所述常驻进程对应的锁文件删除。
3.根据权利要求1所述的系统,其特征在于,还包括:
常驻进程执行模块,用于执行所述系统内核创建的所述常驻进程;以及在执行所述常驻进程完成一个业务周期后,获取与所述常驻进程对应的常驻进程脚本;将获取的常驻进程脚本与所述常驻进程创建时所加载的常驻进程脚本进行比对;在两者不一致时,关闭所述常驻进程。
4.一种常驻进程保活方法,其特征在于,该方法包括:
守护进程周期性获取需要保活的常驻进程脚本的标识信息,并根据所获取的所述常驻进程脚本的标识信息,向锁管理进程发送加锁请求;
锁管理进程在接收到所述守护进程发送的加锁请求后,根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在;若否,则创建所述锁文件,并向所述守护进程反馈加锁成功信息;若是,则向所述守护进程反馈加锁失败信息;
若守护进程接收到所述锁管理进程反馈的加锁成功信息,则触发系统内核基于所述常驻进程脚本创建对应的常驻进程,若守护进程接收到所述锁管理进程反馈的加锁失败信息,则确定所述常驻进程为存活状态;
所述根据所获取的所述常驻进程脚本的标识信息,向锁管理进程发送加锁请求,具体包括:
根据所述标识信息,按照预设的生成规则,生成与所述常驻进程脚本对应的锁文件的保存路径以及锁文件名称;
生成所述加锁请求;所述加锁请求中携带所述保存路径以及所述锁文件名称;
将所述加锁请求发送给所述锁管理进程;
所述根据所述加锁请求检测与所述常驻进程脚本对应的锁文件是否存在,具体包括:
根据所述保存路径,确定与所述保存路径对应的存储位置,并在所述存储位置查找是否存在与所述加锁请求中携带的锁文件名称一致的锁文件。
5.根据权利要求4所述的方法,其特征在于,还包括:
常驻进程监测进程对所述常驻进程的运行状态进行监测,并在监测到所述常驻进程的运行结束后,向所述锁管理进程发送锁文件释放指令;
所述锁管理进程在接收到常驻进程监测进程执行模块发送饿锁文件释放指令后,将所述常驻进程对应的锁文件删除。
6.根据权利要求4所述的方法,其特征在于,还包括:
常驻进程执行所述系统内核创建的所述常驻进程;以及在执行所述常驻进程完成一个业务周期后,获取与所述常驻进程对应的常驻进程脚本;将获取的常驻进程脚本与所述常驻进程创建时所加载的常驻进程脚本进行比对;在两者不一致时,关闭所述常驻进程。
7.一种计算机设备,其特征在于,所述计算机设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行上述计算机程序时实现如权利要求4-6任意一项所述的常驻进程保活方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述权利要求4-6任意一项所述的常驻进程保活方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810746404.3A CN108845875B (zh) | 2018-07-09 | 2018-07-09 | 一种常驻进程保活系统以及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810746404.3A CN108845875B (zh) | 2018-07-09 | 2018-07-09 | 一种常驻进程保活系统以及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845875A CN108845875A (zh) | 2018-11-20 |
CN108845875B true CN108845875B (zh) | 2021-02-02 |
Family
ID=64195840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810746404.3A Active CN108845875B (zh) | 2018-07-09 | 2018-07-09 | 一种常驻进程保活系统以及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108845875B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111355763B (zh) * | 2018-12-24 | 2022-11-15 | 中移(杭州)信息技术有限公司 | 一种配置文件处理方法、装置、设备及介质 |
CN112084049B (zh) * | 2019-06-14 | 2024-07-26 | 佛山市顺德区顺达电脑厂有限公司 | 用于监控基板管理控制器的常驻程序的方法 |
CN112445530B (zh) * | 2019-08-29 | 2023-03-14 | 成都鼎桥通信技术有限公司 | 第三方应用程序保活方法及设备 |
CN113238808A (zh) * | 2020-01-22 | 2021-08-10 | 北京沃东天骏信息技术有限公司 | 一种消息推送方法和装置 |
CN112860408A (zh) * | 2021-03-03 | 2021-05-28 | 苏州沁游网络科技有限公司 | 一种云真机中的进程保活方法、装置、系统及存储介质 |
CN118093211A (zh) * | 2024-01-10 | 2024-05-28 | 广东保伦电子股份有限公司 | 一种分布式锁的处理方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775652A (zh) * | 2016-11-24 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 对终端的应用程序进行唤醒的方法及装置 |
CN106874077A (zh) * | 2015-12-11 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 进程运行方法及装置 |
CN106951335A (zh) * | 2017-02-28 | 2017-07-14 | 维沃移动通信有限公司 | 一种进程守护方法和移动终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058629B1 (en) * | 2001-02-28 | 2006-06-06 | Oracle International Corporation | System and method for detecting termination of an application instance using locks |
-
2018
- 2018-07-09 CN CN201810746404.3A patent/CN108845875B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874077A (zh) * | 2015-12-11 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 进程运行方法及装置 |
CN106775652A (zh) * | 2016-11-24 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 对终端的应用程序进行唤醒的方法及装置 |
CN106951335A (zh) * | 2017-02-28 | 2017-07-14 | 维沃移动通信有限公司 | 一种进程守护方法和移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN108845875A (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845875B (zh) | 一种常驻进程保活系统以及方法 | |
US7908521B2 (en) | Process reflection | |
JP4321705B2 (ja) | スナップショットの取得を制御するための装置及び記憶システム | |
CN100498725C (zh) | 用于最小化计算机应用程序中的丢失的方法和系统 | |
US6591379B1 (en) | Method and system for injecting an exception to recover unsaved data | |
US7516361B2 (en) | Method for automatic checkpoint of system and application software | |
CN109656742B (zh) | 一种节点异常处理方法、装置及存储介质 | |
CN102141947A (zh) | 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统 | |
CN116502220B (zh) | 一种对抗性Java内存马的检测方法及处理方法 | |
CN104734979A (zh) | 一种路由器外接存储设备的控制方法 | |
CN111858077A (zh) | 一种存储系统中io请求日志的记录方法、装置及设备 | |
CN112732674A (zh) | 云平台服务管理方法、装置、设备及可读存储介质 | |
KR101500512B1 (ko) | 데이터 프로세싱 시스템 보안 장치와 보안방법 | |
KR20160138523A (ko) | 위험 파일에 대응하는 행위 정보를 결정하는 방법 및 장치 | |
RU2573783C1 (ru) | Система и способ изменения функционала приложения | |
CN105760276B (zh) | 提高reboot命令重启可靠性并增加复位日志的方法 | |
US20150278293A1 (en) | Asynchronous image repository functionality | |
WO2023103755A1 (zh) | 终端的启动方法、电子设备和计算机可读存储介质 | |
CN103679024A (zh) | 病毒的处理方法及设备 | |
CN111078452A (zh) | 一种bmc固件镜像恢复方法与装置 | |
CN114020356A (zh) | 一种安全关闭服务的方法以及装置 | |
CN113849235A (zh) | 控制方法、装置及电子设备 | |
CN112698870A (zh) | 开关机管理方法、计算设备及存储介质 | |
CN117555717B (zh) | 一种应用异常处理方法、终端及计算机存储介质 | |
US20240211323A1 (en) | Automatically injecting shims into running containers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |