CN111913851A - 进程监控方法、系统、终端及存储介质 - Google Patents
进程监控方法、系统、终端及存储介质 Download PDFInfo
- Publication number
- CN111913851A CN111913851A CN202010770178.XA CN202010770178A CN111913851A CN 111913851 A CN111913851 A CN 111913851A CN 202010770178 A CN202010770178 A CN 202010770178A CN 111913851 A CN111913851 A CN 111913851A
- Authority
- CN
- China
- Prior art keywords
- monitoring
- subprocess
- target
- sub
- state data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及进程监控领域,公开了一种进程监控方法、系统、终端及存储介质,所述方法包括:在接收到目标子进程创建指令时,创建对应的父进程;基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;关闭父进程;控制目标子进程根据预设写入策略写入状态数据至共享文件;控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。本发明解决了现有监控进程出现问题导致被监控的进程处于失控的问题。
Description
技术领域
本发明涉及进程监控领域,尤其涉及一种进程监控方法、系统、终端及计算机可读存储介质。
背景技术
系统中存在实现关键任务的进程,这些进程不能出现宕机、阻塞或中断的情况发生,为了避免这些情况发生带来的影响,一般通过监控进程去监控这些进程,一旦发生这些监控进程可以及时告知系统,以使系统及时重启这些进程。但若是监控进程本身出现宕机、阻塞或中断问题,就可能导致失控。
发明内容
本发明的主要目的在于提出一种进程监控方法、系统、终端及计算机可读存储介质,旨在解决现有监控进程出现问题导致被监控的进程处于失控的问题。
为实现上述目的,本发明提供一种进程监控方法,包括步骤:
在接收到目标子进程创建指令时,创建对应的父进程;
基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;
关闭父进程;
控制目标子进程根据预设写入策略写入状态数据至共享文件;
控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。
可选地,所述基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件的步骤包括:
基于父进程创建共享文件;
基于父进程创建所述指令对应的目标子进程以及生成所述目标子进程的进程标识,并将目标子进程对应的预设参数注入所述目标子进程中;
基于父进程创建第一监控子进程,将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入所述第一监控子进程中。
可选地,所述在接收到目标子进程创建指令时,创建对应的父进程的步骤包括:
在接收到目标子进程创建指令时,判断是否存在空闲的进程句柄资源;
若是,则创建对应的父进程;
若否,则关闭至少一个当前正在运行的进程以释放进程句柄资源,并创建对应的父进程。
可选地,所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤之后还包括:
当第一监控子进程监控到目标子进程异常时,控制第一监控子进程重启目标子进程,并生成目标子进程的新进程标识,将目标子进程的新进程标识注入第一监控子进程中。
可选地,所述基于父进程创建所述指令对应的目标子进程以及生成所述目标子进程的进程标识,并将目标子进程对应的预设参数注入所述目标子进程中的步骤之后还包括:
基于父进程创建第一监控子进程和第二监控子进程;
将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入第一监控子进程中,以及将第二监控子进程对应的预设参数和所述目标子进程的进程标识注入第二监控子进程中;
所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤包括:
控制第一监控子进程和第二监控子进程根据预设读取策略分别从共享文件中读取最新写入的状态数据,并分别根据所述状态数据对所述目标子进程进行监控;
所述当第一监控子进程监控到目标子进程异常时,控制第一监控子进程重启目标子进程,并生成目标子进程的新进程标识,将目标子进程的新进程标识注入第一监控子进程中的步骤包括:
当第一监控子进程和/或第二监控子进程监控到目标子进程异常时,控制第一监控子进程或第二监控子进程重启目标子进程,并更新目标子进程的进程标识,将更新后的目标子进程的进程标识注入第一监控子进程和第二监控子进程中。
可选地,所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤包括:
控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,同时控制第一监控子进程和第二监控子进程每隔第一预设时间相互发送心跳信号;
所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤之后包括:
当第二监控子进程超过第二预设时间未接收到第一监控子进程发送的心跳信号时,控制第二监控子进程重启第一监控子进程,以及控制第二监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,其中第二预设时间大于第一预设时间。
可选地,所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤之后还包括:
当第一监控子进程超过第二预设时间未接收到第二监控子进程发送的心跳信号时,控制第一监控子进程重启第二监控子进程。
为实现上述目的,本发明还提供一种进程监控系统,所述系统包括:
第一创建模块,用于在接收到目标子进程创建指令时,创建对应的父进程;
第二创建模块,用于基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;
关闭模块,用于关闭父进程;
写入模块,用于控制目标子进程根据预设写入策略写入状态数据至共享文件;
读取模块,用于控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。
为实现上述目的,本发明还提供一种终端,所述终端包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的进程监控方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的进程监控方法的步骤。
本发明提出的一种进程监控方法、终端及计算机可读存储介质,通过在接收到目标子进程创建指令时,创建对应的父进程;基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;关闭父进程;控制目标子进程根据预设写入策略写入状态数据至共享文件;控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。从而在关闭父进程后,第一监控子进程自动转换为一个守护进程,使得转换为守护进程的第一监控子进程不会因为系统需要释放部分进程资源时被自动关闭,也不会因为系统中资源冲突导致进程被阻塞或宕机,进而使得监控服务本身能够更加稳定。
同时,由于目标子进程和第一监控子进程都基于同一个父进程创建的,目标子进程和第一监控子进程对应的底层代码是属于同一套底层代码中的,因此使得在目标子进程对应的业务迁移的过程中,只需要迁移一次,即迁移目标子进程和第一监控子进程共同对应的一套底层代码,就可以继续实现第一监控子进程对目标子进程的监控。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明进程监控方法第一实施例的流程示意图;
图3为本发明进程监控方法第一实施例中步骤S20的细化流程示意图;
图4为本发明进程监控方法第二实施例的流程示意图;
图5为本发明进程监控方法第三实施例的流程示意图;
图6为本发明进程监控方法第四实施例的流程示意图;
图7为本发明进程监控系统的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参照图1,图1为本发明各个实施例中所提供的终端的硬件结构示意图。所述终端包括通信模块01、存储器02及处理器03等部件。本领域技术人员可以理解,图1中所示出的终端还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中,所述处理器03分别与所述存储器02和所述通信模块01连接,所述存储器02上存储有计算机程序,所述计算机程序同时被处理器03执行。
通信模块01,可通过网络与外部设备连接。通信模块01可以接收外部设备发出的数据,还可发送数据、指令及信息至所述外部设备,所述外部设备可以是手机、平板电脑、笔记本电脑和台式电脑等电子设备。
存储器02,可用于存储软件程序以及各种数据。存储器02可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件)等;存储数据区可存储根据终端的使用所创建的数据或信息等。此外,存储器02可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器03,是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器02内的软件程序和/或模块,以及调用存储在存储器02内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。处理器03可包括一个或多个处理单元;优选的,处理器03可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器03中。
尽管图1未示出,但上述终端还可以包括电路控制模块,电路控制模块用于与市电连接,实现电源控制,保证其他部件的正常工作。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
根据上述硬件结构,提出本发明方法各个实施例。
参照图2,在本发明进程监控方法的第一实施例中,所述进程监控方法包括步骤:
步骤S10,在接收到目标子进程创建指令时,创建对应的父进程;
在本方案中,当需要执行一个任务或业务时,会创建执行该任务或业务的进程,故在需要执行一个任务或业务时,会接收到目标子进程创建指令。当接收到该目标子进程创建指令时,会先创建一个父进程。
步骤S20,基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;
然后基于已创建的父进程创建目标子进程、监控子进程和共享文件。目标子进程是用于执行各项任务。监控子进程是用于监控目标子进程的运行状态。共享文件是用于存储目标子进程的状态数据。
具体地的,基于父进程创建目标子进程、第一监控子进程和共享文件的过程请参照图3,基于上述实施例,步骤S20包括:
步骤S21,基于父进程创建共享文件;
先基于已创建的父进程创建一个共享文件,为确保同属于一个父进程下的各子进程都能对该共享文件进行访问,可以设置同属一个父进程下的各子进程都具有读写权限,例如设置该共享文件的读写权限为777,还可以为该共享文件单独设置目标子进程具有写的权限,第一监控子进程具有读的权限。
步骤S22,基于父进程创建所述指令对应的目标子进程以及生成目标子进程的进程标识,并将目标子进程对应的预设参数注入所述目标子进程中;
然后基于已创建的父进程创建目标子进程,具体的是通过调用父进程执行fork()函数创建目标子进程,同时执行fork()函数后会返回一个非负整数值,该非负整数值即创建的目标子进程的进程标识,然后在将目标子进程对应的预设参数注入至创建的目标子进程中,从而目标子进程根据注入的预设参数进行正常的启动、执行任务以及反馈状态。目标子进程对应的预设参数是指目标子进程正常启动和正常执行任务所需的参数,包括启动参数和运行参数。
步骤S23,基于父进程创建第一监控子进程,将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入所述第一监控子进程中。
在创建完成目标子进程并注入对应的参数后,会再次通过调用父进程执行fork()函数创建第一监控子进程,然后在将第一监控子进程对应的预设参数和目标子进程的进程标识一起注入至创建的第一监控子进程中,从而第一监控子进程根据注入的预设参数和目标子进程的进程标识进行正常地启动以及对目标子进程执行监控任务。监控子进程对应的预设参数是指监控子进程正常启动和正常执行监控所需的参数,包括启动参数和监控运行参数。
需要说明的是,步骤S22优选在步骤S23之前执行,而执行步骤S21与执行步骤S22和步骤S23之间的相对顺序不限定,即可以正如本实施例所述的先执行步骤S21,再依次执行步骤S22和步骤S23,也可以先依次执行步骤S22和步骤S23,再执行步骤S21,还可以先执行步骤S22,再执行步骤S21,最后执行步骤S23。
步骤S30,关闭父进程;
在成功创建目标子进程、监控子进程和共享文件后,会关闭父进程。由于父进程的关闭,目标子进程和监控子进程便成为常驻进程类型,会随着系统启动而启动,随着系统关闭而关闭,不会因为系统需要释放部分进程资源时被自动关闭,也不会因为系统中资源冲突导致进程被阻塞或宕机。
步骤S40,控制目标子进程根据预设写入策略写入状态数据至共享文件;
在关闭父进程后,控制目标子进程根据预设写入策略将自身状态数据写入至共享文件中。具体地,当预设写入策略为实时写入时,会控制目标子进程实时将自身状态数据写入共享文件中。当预设写入策略为每隔预设时间写入时,会控制目标子进程每隔预设时间将自身状态数据写入共享文件中,例如每隔1分钟,将自身状态数据写入共享文件中。当预设写入策略为每执行完一个任务时,会控制目标子进程在执行完一个任务时将自身状态数据写入共享文件中。
步骤S50,控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。
在关闭父进程后,同时会控制第一监控子进程根据预设读取策略从共享文件中读取目标子进程最新写入的状态数据。当预设读取策略为实时读取时,会控制第一监控子进程实时从共享文件中读取目标子进程最新写入的状态数据。当预设读取策略为每隔预设时间读取时,会控制第一监控子进程每隔预设时间从共享文件中读取目标子进程最新写入的状态数据,例如每隔1分钟,从共享文件中读取目标子进程最新写入的状态数据。
在控制第一监控子进程从共享文件中读取最新写入的状态数据后,会控制监控子进程根据读取的最新写入的状态数据对目标子进程进行监控,确定所监控的目标子进程的状态,该状态可以包括初始化状态、加载状态、正常运行状态、正常退出状态或异常状态等,在此不对状态的类型进行限定。各状态对应的状态数据可以采用不同的标识进行表示,例如目标子进程采用数字0来表示初始化状态,数字1来表示正常运行中,数字2来表示加载状态,4来表示正常退出状态,9来标识异常状态。第一监控子进程读取最新写入的状态数据后,就可以获知当前所监控的目标子进程的状态。例如读取的最新写入的状态数据为1,第一监控子进程可以获知目标子进程的状态为正常运行中,若读取的最新写入的状态数据为9,第一监控子进程可以或者目标子进程的状态为异常状态。
需要说明的是,有可能某些原因导致目标子进程出现异常并且导致目标子进程不能将自身状态数据写入至共享文件中,若共享文件中目标子进程出现异常前最后写入的状态数据为正常运行状态,第一监控子进程读取共享文件中的最新写入数据,可能会误认为目标子进程仍然处于正常运行状态,为防止发生该情况,第一监控子进程从共享文件中读取最新写入数据时还会读取该最新写入数据的写入时间,判断最新写入数据的写入时间与当前时间的差值是否大于等于预设阈值,若大于等于预设阈值,则直接确定目标子进程处于异常状态,若小于预设阈值,则根据读取的最新状态数据确定目标子进程的状态。
当目标子进程的预设写入策略为每执行完一个任务写入状态数据时,可能由于任务完成时间比较长,导致目标子进程长时间未能将自身状态数据写入至共享文件中,使得第一监控子进程从共享文件中读取最新写入数据的时间与共享文件中最新写入的状态数据对应的写入时间差值已经大于预设阈值,若按照超过预设阈值判定目标子进程异常的策略,第一监控子进程会错误判定目标子进程的状态,对目标子进程的错误重启,导致目标子进程正在执行的任务被中断。为了避免这种问题出现,若第一监控子进程从共享文件中读取最新写入数据的时间与共享文件中最新写入的状态数据对应的写入时间差值已经大于预设阈值时,会控制第一监控子进程每隔一段时间发送心跳信号至目标子进程。若目标子进程接收到心跳信号后,目标子进程正常的话,会在一定时间内反馈心跳回应至第一监控子进程,从而在第一监控子进程从共享文件中读取最新写入数据的时间与共享文件中最新写入的状态数据对应的写入时间差值已经大于预设阈值的场景下,根据接收到心跳回应能够确认目标子进程仍然处于正常状态,而不会错误判定目标子进程处于异常状态。为了避免这种问题出现,在目标子进程在超过一定时间段未写入状态数据至共享文件中,还可以控制目标子进程主动发送心跳信号至监控子进程,以使监控子进程确认目标子进程仍然在执行任务,处于正常状态。
本实例通过在接收到目标子进程创建指令时,创建对应的父进程;基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;关闭父进程;控制目标子进程根据预设写入策略写入状态数据至共享文件;控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。从而在关闭父进程后,第一监控子进程自动转换为一个守护进程,使得转换为守护进程的第一监控子进程不会因为系统需要释放部分进程资源时被自动关闭,也不会因为系统中资源冲突导致进程被阻塞或宕机,进而使得监控服务本身能够更加保持稳定。
同时,由于目标子进程和第一监控子进程都基于同一个父进程创建的,目标子进程和第一监控子进程对应的底层代码是属于同一套底层代码中的,因此使得在目标子进程对应的业务迁移的过程中,只需要迁移一次,即迁移目标子进程和第一监控子进程共同对应的一套底层代码,就可以继续实现第一监控子进程对目标子进程的监控。
进一步地,请参照图4,图4为根据本申请进程监控方法的第一实施例提出本申请进程监控方法的第二实施例,在本实施例中,步骤S10包括:
步骤S11,在接收到目标子进程创建指令时,判断是否存在空闲的进程句柄资源;若是,则执行步骤S12;若否,则执行步骤S13;
步骤S12,创建对应的父进程;
步骤S13,关闭至少一个当前正在运行的进程以释放进程句柄资源,并创建对应的父进程。
在本实施例中,由于创建进程需要消耗系统的进程句柄资源,为了成功创建父进程、目标子进程和监控子进程等,在接收到目标子进程创建指令时,会先判断系统是否存在空闲的进程句柄资源,若存在,则直接创建对应的父进程,若不存在空闲的进程句柄资源,则会关闭至少一个当前正在运行的进程,用于释放被占用的进程句柄资源,然后利用被释放的进程句柄资源创建父进程。
需要说明的是,在关闭当前正在运行的进程时,可以根据当前正在运行的各进程对应的预先设置的重要级别,优先关闭重要级别最低的进程,即不重要的进程关闭。
本实施例通过在创建父进程、目标子进程和第一监控子进程前,先判断系统是否存在空闲的进程句柄资源用于创建父进程、目标子进程和第一监控子进程,从而避免因为没有进程句柄资源导致进程创建失败,使得创建进程过程时间较长,提高创建进程的效率和成功率。
进一步地,请参照图5,图5为根据本申请进程监控方法的第一实施例和第二实施例提出本申请进程监控方法的第三实施例,在本实施例中,步骤S50之后包括:
步骤S60,当第一监控子进程监控到目标子进程异常时,控制第一监控子进程重启目标子进程,并生成目标子进程的新进程标识,将目标子进程的新进程标识注入第一监控子进程中。
在本实施例中,在控制第一监控子进程根据读取的状态数据确定目标子进程处于异常状态后,会控制第一监控子进程根据注入的目标子进程的进程标识调用kill()函数关闭该进程标识对应的目标子进程,并重新启动目标子进程,以使目标子进程能够正常运行,并继续执行任务,同时对应重新启动的目标子进程,会重新为目标子进程生成一个新进程标识,然后将新进程标识注入第一监控子进程中,替换掉原先注入的目标子进程的进程标识,使得第一监控子进程可以继续对重启后的目标子进程进行监控。
本实施例通过在确认目标子进程存在异常后,立即重新启动目标子进程,以使目标子进程可以继续执行任务。
进一步地,请参照图6,图6为根据本申请进程监控方法的第一实施例、第二实施例和第三实施例提出本申请进程监控方法的第四实施例,在本实施例中,步骤S22之后还包括:
步骤S24,基于父进程创建第一监控子进程和第二监控子进程;
步骤S25,将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入第一监控子进程中,以及将第二监控子进程对应的预设参数和所述目标子进程的进程标识注入第二监控子进程中;
步骤S50包括:
步骤S51,控制第一监控子进程和第二监控子进程根据预设读取策略分别从共享文件中读取最新写入的状态数据,并分别根据所述状态数据对所述目标子进程进行监控;
步骤S60包括:
步骤S61,当第一监控子进程和/或第二监控子进程监控到目标子进程异常时,控制第一监控子进程或第二监控子进程重启目标子进程,并更新目标子进程的进程标识,将更新后的目标子进程的进程标识注入第一监控子进程和第二监控子进程中。
在本实施例中,在创建完成目标子进程并注入对应的参数后,会通过调用父进程执行fork()函数创建两个监控子进程,即第一监控子进程和第二监控子进程,然后在将第一监控子进程对应的预设参数和目标子进程的进程标识一起注入至创建的第一监控子进程中,同时将第二监控子进程对应的预设参数和目标子进程的进程标识注入创建的第二监控子进程,从而第一监控子进程和第二监控子进程都根据注入的对应预设参数和目标子进程的进程标识进行正常地启动以及对目标子进程执行监控任务。
在关闭父进程后,会控制第一监控子进程和第二监控子进程都根据预设读取策略从共享文件中读取目标子进程最新写入的状态数据。当预设读取策略为实时读取时,会控制第一监控子和第二监控子进程实时从共享文件中读取目标子进程最新写入的状态数据。当预设读取策略为每隔预设时间读取时,会控制第一监控子进程和第二监控子进程每隔预设时间从共享文件中读取目标子进程最新写入的状态数据,例如每隔1分钟,从共享文件中读取目标子进程最新写入的状态数据。
在控制第一监控子进程和第二监控子进程从共享文件中读取最新写入的状态数据后,会控制第一监控子和第二监控子进程根据读取的最新写入的状态数据,确定所监控的目标子进程的状态,该状态可以包括初始化状态、加载状态、正常运行状态、正常退出状态或异常状态等,在此不对状态的类型进行限定。
当第一监控子进程和第二监控子进程中任一个监控子进程确定目标子进程的状态为异常状态时,会控制第一监控子进程或第二监控子进程根据注入的目标子进程的进程标识调用kill()函数关闭该进程标识对应的目标子进程,并重新启动目标子进程,以使目标子进程能够正常运行,并继续执行任务,同时对应重新启动的目标子进程,会重新分配目标子进程的一个新的进程标识,然后将更新后的进程标识注入第一监控子进程和第二监控子进程中,替换掉原先注入的目标子进程的进程标识,使得第一监控子进程和第二监控子进程可以继续对重启后的目标子进程进行监控。
需要说明的是,执行控制第一监控子进程或第二监控子进程重启目标子进程的步骤具体可以先控制第一监控子进程重启目标子进程,若第一监控子进程重启目标子进程失败时,再控制第二监控子进程重启目标子进程。
本实施例通过建立两个监控子进程,同时对同一个目标子进程的状态进行监控,从而防止由于唯一一个监控子进程出现问题时导致目标子进程处于监控失控状态。
进一步地,根据本申请进程监控方法的前述实施例提出本申请进程监控方法的第五实施例,在本实施例中,步骤S50包括:
步骤S52,控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,同时控制第一监控子进程和第二监控子进程每隔第一预设时间相互发送心跳信号;
步骤S50之后包括:
步骤S70,当第二监控子进程超过第二预设时间未接收到第一监控子进程发送的心跳信号时,控制第二监控子进程重启第一监控子进程,以及控制第二监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控;
步骤S80,当第一监控子进程超过第二预设时间未接收到第二监控子进程发送的心跳信号时,控制第一监控子进程重启第二监控子进程。
在本实施例中,虽然基于父进程创建了两个监控子进程即第一监控子进程和第二监控子进程,但在关闭父进程后,只会先控制创建的两个监控子进程中的第一监控子进程根据预设读取策略从共享文件中读取目标子进程最新写入的状态数据,并根读取的状态数据确认目标子进程的状态,同时还会控制第一监控子进程和第二监控子进程每个第一预设时间相互发送心跳信号,双方都通过是否在超过第二预设时间未接收到对方发送的心跳信号,判断对方是否处于异常状态,当第二监控子进程超过第二预设时间未接收到第一监控子进程发送的心跳信号时,会确认第一监控子进程处于异常状态,那么说明此时目标子进程处于监控失控状态,此时会控制第二监控子进程启动读取状态数据的任务,即根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,同时还控制第二监控子进程重启第一监控子进程,由于第二监控子进程已经正在执行读取状态数据的任务,重启后的第一监控子进程不会恢复执行读取状态数据的任务,只会恢复通过建立的心跳连接每隔第一预设时间发送心跳信号至第二监控子进程,来监控第二监控子进程是否处于正常运行状态。后续如果第一监控子进程确定第二监控子进程出现异常时,第一监控子进程又会启动读取状态数据的任务,并重启第二监控子进程,重启后的第二监控子进程也不会启动读取状态数据任务。
当第一监控子进程通过建立的心跳连接超过第二预设时间未接收到第二监控子进程发送的心跳信号时,会确认第二监控子进程处于异常状态,会控制第一监控子进程重启第二监控子进程。
需要说明的时,在控制两个监控子进程中任一个监控子进程重启另一个监控子进程前,会先判断当前执行根据预设读取策略读取共享文件中最新写入的状态数据,以及根据所述状态数据对目标子进程进行监控的任务的监控子进程是否为待重启的监控子进程,若不是,则说明执行根据预设读取策略读取共享文件中最新写入的状态数据,以及根据所述状态数据对目标子进程进行监控的任务的是两个监控子进程中的另一个监控子进程,则由另一个监控子进程重启待重启的监控子进程,重启后该监控子进程恢复发送心跳信号至另一个监控子进程的任务,而另一个监控子进程仍然继续执行根据预设读取策略读取共享文件中最新写入的状态数据,以及根据所述状态数据对目标子进程进行监控的任务;若是,则说明执行根据预设读取策略读取共享文件中最新写入的状态数据,以及根据所述状态数据对目标子进程进行监控的任务为待重启的监控子进程,会切换另一个监控子进程执行根据预设读取策略读取共享文件中最新写入的状态数据,以及根据所述状态数据对目标子进程进行监控的任务,并且控制另一个监控子进程重启待重启的监控子进程,重启后该监控子进程只恢复发送心跳信号至另一个监控子进程的任务。
本实施例创建了两个监控子进程,同一时刻只有一个监控子进程执行读取状态数据,两个监控子进程间建立的心跳连接,可以相互监控彼此的状态,当前正在执行读取状态数据任务的监控子进程出现异常时,由另一个监控子进程执行读取状态数据任务,从而确保读取状态数据任务不会中断,使得目标子进程不会出现监控失控的状态。并且发送心跳信号相比读取状态数据所需占用的系统资源较少,因此相比两个监控子进程同时都执行读取状态数据任务,两个监控子进程轮流执行读取状态数据任务对系统资源占用较少。
参见图7,本发明还提供一种进程监控系统,包括:
第一创建模块10,用于在接收到目标子进程创建指令时,创建对应的父进程;
第二创建模块20,用于基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;
关闭模块30,用于关闭父进程;
写入模块40,用于控制目标子进程根据预设写入策略写入状态数据至共享文件;
读取模块50,用于控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。
进一步,所述第二创建模块20包括:
第一创建子模块21,用于基于父进程创建共享文件;
第二创建子模块22,用于基于父进程创建所述指令对应的目标子进程以及生成所述目标子进程的进程标识,并将目标子进程对应的预设参数注入所述目标子进程中;
第三创建子模块23,用于基于父进程创建第一监控子进程,将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入所述第一监控子进程中。
进一步,所述第一创建模块10还包括:
判断子模块11,用于在接收到目标子进程创建指令时,判断是否存在空闲的进程句柄资源;若否,则调用第四创建子模块12执行相应操作;若是,则调用关闭子模块13执行相应操作;
第四创建子模块12,用于创建对应的父进程;
关闭子模块13,用于关闭至少一个当前正在运行的进程以释放进程句柄资源,并创建对应的父进程。
进一步,目标子进程的状态包括异常状态,所述进程监控系统还包括:
第一重启模块60,用于当第一监控子进程监控到目标子进程异常时,控制第一监控子进程重启目标子进程,并生成目标子进程的新进程标识,将目标子进程的新进程标识注入第一监控子进程中。
进一步,所述第二创建模块20还包括:
第五创建子模块14,用于基于所述父进程创建第一监控子进程和第二监控子进程;
注入子模块15,用于将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入第一监控子进程中,以及将第二监控子进程对应的预设参数和所述目标子进程的进程标识注入第二监控子进程中;
所述读取模块50包括:
第一读取子模块,用于控制第一监控子进程和第二监控子进程根据预设读取策略分别从共享文件中读取最新写入的状态数据,并分别根据所述状态数据对所述目标子进程进行监控;
所述第一重启模块60包括:
重启子模块61,用于当第一监控子进程和/或第二监控子进程监控到目标子进程异常时,控制第一监控子进程或第二监控子进程重启目标子进程,并更新目标子进程的进程标识,将更新后的目标子进程的进程标识注入第一监控子进程和第二监控子进程中。
进一步,所述读取模块50包括:
第二读取子模块52,用于控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,同时控制第一监控子进程和第二监控子进程每隔第一预设时间相互发送心跳信号;
所述进程监控系统还包括:
第二重启模块70,当第二监控子进程超过第二预设时间未接收到第一监控子进程发送的心跳信号时,控制第二监控子进程重启第一监控子进程,以及控制第二监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,其中第二预设时间大于第一预设时间。
进一步,所述进程监控系统还包括:
第三重启模块80,用于当第一监控子进程超过第二预设时间未接收到第二监控子进程发送的心跳信号时,控制第一监控子进程重启第二监控子进程。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序。所述计算机可读存储介质可以是图1的终端中的存储器02,也可以是如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘中的至少一种,所述计算机可读存储介质包括若干信息用以使得终端执行本发明各个实施例所述的方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种进程监控方法,其特征在于,包括步骤:
在接收到目标子进程创建指令时,创建对应的父进程;
基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;
关闭父进程;
控制目标子进程根据预设写入策略写入状态数据至共享文件;
控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。
2.根据权利要求1所述的进程监控方法,其特征在于,所述基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件的步骤包括:
基于父进程创建共享文件;
基于父进程创建所述指令对应的目标子进程以及生成所述目标子进程的进程标识,并将目标子进程对应的预设参数注入所述目标子进程中;
基于父进程创建第一监控子进程,将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入所述第一监控子进程中。
3.根据权利要求2所述的进程监控方法,其特征在于,所述在接收到目标子进程创建指令时,创建对应的父进程的步骤包括:
在接收到目标子进程创建指令时,判断是否存在空闲的进程句柄资源;
若是,则创建对应的父进程;
若否,则关闭至少一个当前正在运行的进程以释放进程句柄资源,并创建对应的父进程。
4.根据权利要求1至3中任一项所述的进程监控方法,其特征在于,所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤之后还包括:
当第一监控子进程监控到目标子进程异常时,控制第一监控子进程重启目标子进程,并生成目标子进程的新进程标识,将目标子进程的新进程标识注入第一监控子进程中。
5.根据权利要求4所述的进程监控方法,其特征在于,所述基于父进程创建所述指令对应的目标子进程以及生成所述目标子进程的进程标识,并将目标子进程对应的预设参数注入所述目标子进程中的步骤之后还包括:
基于父进程创建第一监控子进程和第二监控子进程;
将第一监控子进程对应的预设参数和所述目标子进程的进程标识注入第一监控子进程中,以及将第二监控子进程对应的预设参数和所述目标子进程的进程标识注入第二监控子进程中;
所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤包括:
控制第一监控子进程和第二监控子进程根据预设读取策略分别从共享文件中读取最新写入的状态数据,并分别根据所述状态数据对所述目标子进程进行监控;
所述当第一监控子进程监控到目标子进程异常时,控制第一监控子进程重启目标子进程,并生成目标子进程的新进程标识,将目标子进程的新进程标识注入第一监控子进程中的步骤包括:
当第一监控子进程和/或第二监控子进程监控到目标子进程异常时,控制第一监控子进程或第二监控子进程重启目标子进程,并更新目标子进程的进程标识,将更新后的目标子进程的进程标识注入第一监控子进程和第二监控子进程中。
6.根据权利要求5所述的进程监控方法,其特征在于,所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤包括:
控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,同时控制第一监控子进程和第二监控子进程每隔第一预设时间相互发送心跳信号;
所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤之后包括:
当第二监控子进程超过第二预设时间未接收到第一监控子进程发送的心跳信号时,控制第二监控子进程重启第一监控子进程,以及控制第二监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控,其中第二预设时间大于第一预设时间。
7.根据权利要求6所述的进程监控方法,其特征在于,所述控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控的步骤之后还包括:
当第一监控子进程超过第二预设时间未接收到第二监控子进程发送的心跳信号时,控制第一监控子进程重启第二监控子进程。
8.一种进程监控系统,其特征在于,所述进程监控系统包括:
第一创建模块,用于在接收到目标子进程创建指令时,创建对应的父进程;
第二创建模块,用于基于父进程创建所述指令对应的目标子进程、第一监控子进程和共享文件;
关闭模块,用于关闭父进程;
写入模块,用于控制目标子进程根据预设写入策略写入状态数据至共享文件;
读取模块,用于控制第一监控子进程根据预设读取策略读取共享文件中最新写入的状态数据,并根据所述状态数据对所述目标子进程进行监控。
9.一种终端,其特征在于,所述终端包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的进程监控方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的进程监控方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770178.XA CN111913851A (zh) | 2020-07-31 | 2020-07-31 | 进程监控方法、系统、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010770178.XA CN111913851A (zh) | 2020-07-31 | 2020-07-31 | 进程监控方法、系统、终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111913851A true CN111913851A (zh) | 2020-11-10 |
Family
ID=73288086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010770178.XA Pending CN111913851A (zh) | 2020-07-31 | 2020-07-31 | 进程监控方法、系统、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111913851A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181544A (zh) * | 2020-11-27 | 2021-01-05 | 深圳开源互联网安全技术有限公司 | Java应用的运行方法、系统、装置及计算机可读存储介质 |
CN113360271A (zh) * | 2021-07-21 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 进程管理方法、装置、设备、存储介质及程序产品 |
CN114143569A (zh) * | 2021-11-18 | 2022-03-04 | 聚好看科技股份有限公司 | 一种网页录制和直播方法及系统 |
CN114385329A (zh) * | 2021-12-06 | 2022-04-22 | 深圳市亚略特科技股份有限公司 | 进程管理方法、装置、电子装置及可读存储介质 |
CN115220993A (zh) * | 2022-04-20 | 2022-10-21 | 广州汽车集团股份有限公司 | 进程监控方法、装置、车辆及存储介质 |
CN115794550A (zh) * | 2022-11-23 | 2023-03-14 | 广州汽车集团股份有限公司 | 进程管理方法、装置、交通工具以及存储介质 |
-
2020
- 2020-07-31 CN CN202010770178.XA patent/CN111913851A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181544A (zh) * | 2020-11-27 | 2021-01-05 | 深圳开源互联网安全技术有限公司 | Java应用的运行方法、系统、装置及计算机可读存储介质 |
CN113360271A (zh) * | 2021-07-21 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 进程管理方法、装置、设备、存储介质及程序产品 |
CN114143569A (zh) * | 2021-11-18 | 2022-03-04 | 聚好看科技股份有限公司 | 一种网页录制和直播方法及系统 |
CN114143569B (zh) * | 2021-11-18 | 2024-02-27 | 聚好看科技股份有限公司 | 一种网页录制和直播方法及系统 |
CN114385329A (zh) * | 2021-12-06 | 2022-04-22 | 深圳市亚略特科技股份有限公司 | 进程管理方法、装置、电子装置及可读存储介质 |
CN115220993A (zh) * | 2022-04-20 | 2022-10-21 | 广州汽车集团股份有限公司 | 进程监控方法、装置、车辆及存储介质 |
CN115220993B (zh) * | 2022-04-20 | 2024-03-12 | 广州汽车集团股份有限公司 | 进程监控方法、装置、车辆及存储介质 |
CN115794550A (zh) * | 2022-11-23 | 2023-03-14 | 广州汽车集团股份有限公司 | 进程管理方法、装置、交通工具以及存储介质 |
CN115794550B (zh) * | 2022-11-23 | 2024-04-02 | 广州汽车集团股份有限公司 | 进程管理方法、装置、交通工具以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111913851A (zh) | 进程监控方法、系统、终端及存储介质 | |
CN109992310B (zh) | 应用程序保活方法、装置、计算机设备和存储介质 | |
US7721153B2 (en) | System, method and program product for recovering from a failure | |
RU2407053C2 (ru) | Система и способ планирования управления устройствами | |
US20090182802A1 (en) | Mobile device management scheduling | |
CN101227630A (zh) | 一种基于窗口平台的应用程序监控方法 | |
US20220035438A1 (en) | Control method, apparatus, and electronic device | |
US20210406127A1 (en) | Method to orchestrate a container-based application on a terminal device | |
CN112732674B (zh) | 云平台服务管理方法、装置、设备及可读存储介质 | |
CN112866314B (zh) | 分布式主从系统中从节点的切换方法、主节点设备和存储介质 | |
KR20100108578A (ko) | 컴퓨팅 장치 셧다운 방법, 컴퓨팅 장치 및 컴퓨터 판독가능 저장 매체 | |
JP2002049492A (ja) | アプリケーション管理方法、アプリケーション管理プログラムを記録した記録媒体、端末装置、および携帯型電話機 | |
CN107423087A (zh) | 一种服务器可监测的应用程序升级方法 | |
CN116361114A (zh) | 一种ai板卡监控保活方法、装置、设备及介质 | |
US20040025007A1 (en) | Restricting access to a method in a component | |
KR20060114661A (ko) | 장치관리 시스템 및 그 시스템에서의 사용자와의 상호작용방법 | |
JP2007200103A (ja) | クライアントサーバシステムおよびリソース制御方法 | |
JP2008140280A (ja) | サーバの運用管理における信頼性強化方法 | |
CN110968852B (zh) | 一种虚拟机密码管理方法、系统、设备及计算机存储介质 | |
CN114567664A (zh) | 消息处理结果监控方法、装置、计算机设备和存储介质 | |
US20200241988A1 (en) | Information processing apparatus, method, and computer program product | |
JP2010146436A (ja) | 監視システム、及びその制御方法、プログラム | |
CN113704005B (zh) | 可远程调用应用的方法、装置、系统及可读存储介质 | |
CN109800013B (zh) | 服务器应用功能热扩展的方法和系统及可读存储介质 | |
CN113515397B (zh) | Ipmi命令处理方法、服务器和非暂时性计算机可读存储介质 |
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 |