一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

后台程序监控方法及装置与流程

2022-12-13 21:37:27 来源:中国专利 TAG:


1.本公开涉及计算机信息处理领域,具体而言,涉及一种后台程序监控方法、装置、电子设备及计算机可读介质。


背景技术:

2.在网络设备操作系统中,通常运行着多个后台任务。后台任务是在后台一直运行但不与用户进行交互的任务,一般用于提供周期性监控、定时提醒、服务器端口监听等服务,比如周期性检测主板、cpu温度并产生温度过高预警功能的任务、ftp服务、ntp服务等。
3.后台任务可能由于程序故障、系统不稳定、网络报文处理出错导致任务结束运行(主动退出或异常崩溃)。由于后台任务没有相应的控制终端,用户通常无法直接发现后台任务已结束,因此需要采取一些措施确保需要长期运行的后台任务在结束运行后能重新启动,继续向系统提供原有的功能。
4.在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.有鉴于此,本公开提供一种后台程序监控方法、装置、电子设备及计算机可读介质,不仅能对后台任务进行监控,还能够对第三方程序进行监控,实时感知进程和程序故障,在后台任务或第三方程序因故障结束后立即将其重启,保证系统安全运行。
6.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
7.根据本公开的一方面,提出一种后台程序监控方法,该方法包括:监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件;对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识;将所述进程信息和监控任务表中的进程信息进行比较;在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程。
8.在本公开的一种示例性实施例中,还包括:获取多个后台任务的进程信息;通过所述多个后台任务的进程信息生成所述监控任务表。
9.在本公开的一种示例性实施例中,获取多个后台任务的进程信息,包括:获取系统后台任务的进程信息;获取第三方软件后台任务的进程信息。
10.在本公开的一种示例性实施例中,获取多个后台任务的进程信息之后,还包括:将所述多个后台任务的ulimit属性信息设置为rlim_infity。
11.在本公开的一种示例性实施例中,还包括:设置所述预设文件的文件生成目录和文件名格式。
12.在本公开的一种示例性实施例中,监控预设文件的生成信息,包括:监控coredump文件的生成信息。
13.在本公开的一种示例性实施例中,监控coredump文件的生成信息,包括:通过文件系统事件监控机制获取coredump文件的生成信息。
14.在本公开的一种示例性实施例中,通过文件系统事件监控机制获取coredump文件的生成信息,包括:inotify监控预设文件的文件生成目录以获取coredump文件的生成信息。
15.在本公开的一种示例性实施例中,重启所述进程信息对应的后台进程,包括:基于所述进程信息获取所述后台进程的进程名;获取所述进程名对应的文件信息、参数、配置文件;基于所述文件信息、所述参数、所述配置文件进行所述后台进程的重启。
16.根据本公开的一方面,提出一种后台程序监控装置,该装置包括:监控模块,用于监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件;信息模块,用于对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识;比较模块,用于将所述进程信息和监控任务表中的进程信息进行比较;重启模块,用于在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程。
17.在本公开的一种示例性实施例中,还包括:任务模块,用于获取多个后台任务的进程信息;通过所述多个后台任务的进程信息生成所述监控任务表。
18.根据本公开的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
19.根据本公开的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
20.根据本公开的后台程序监控方法、装置、电子设备及计算机可读介质,监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件;对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识;将所述进程信息和监控任务表中的进程信息进行比较;在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程的方式,不仅能对后台任务进行监控,还能够对第三方程序进行监控,实时感知进程和程序故障,在后台任务或第三方程序因故障结束后立即将其重启,保证系统安全运行。
21.应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
22.通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是根据一示例性实施例示出的一种后台程序监控方法的流程图。
24.图2是根据另一示例性实施例示出的一种后台程序监控方法的流程图。
25.图3是根据一示例性实施例示出的一种后台程序监控装置的框图。
26.图4是根据一示例性实施例示出的一种电子设备的框图。
27.图5是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
28.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
29.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
30.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
31.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
32.应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
33.本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
34.本公开的发明人发现,现有技术方案是在操作系统中启动一个专门的后台任务,称为监控任务,用于监控其它后台任务,当它发现任何其它某后台任务已结束运行时,则将其重新启动。有些方案中,监控的方式是在监控任务和其它后台任务间建立通信,监控任务监控后台任务发给它的心跳消息,当它收不到某后台任务应当发送的心跳消息时即判定该任务已结束运行;另一些方案中,监控的方式是由后台任务以轮询方式周期性检查其监控的后台任务是否有已经不在运行的。
35.一种典型的实现方案是:整个系统中生成一个后台任务清单文件,该清单由系统维护人员指定,其中每行对应一个后台任务,每行包括该后台任务的名称、启动方式和存储该任务标识id的文件(pid文件)的路径信息。各后台任务则在刚启动时将自己的任务标识id写入相应的pid文件中。后台任务每隔一定时间(如1分钟)遍历该清单,对于每一行,检查当前系统中是否有任务id等于该行中pid文件内存储的任务标识id,若有则说明该任务还在运行;若无则说明该任务已结束运行,此时根据该行描述的启动方式将该任务重新启动。
36.现有技术方案的存在以下问题:
37.(1)对于通过心跳消息监控后台任务的运行状态的方案,需要对已有后台任务的源代码进行修改,实现较复杂。各后台任务需要能够发送心跳消息,则需要在原有功能的基础上实现向监控任务定期发送心跳消息的功能,程序实现上较为复杂,且大量的进程间通信消息使得系统负荷较重。
38.(2)对于通过轮询方式检查所监控的后台任务是否在运行的方案,如果程序故障进程崩溃,监控任务感知的时间和轮询时间有关系,如果轮询时间过大,则不能实时的重新启动进程,从而影响业务。如果轮询时间过小,会消耗cpu等资源,加重系统的负荷,而且只能降低影响而不能实时感知到进程崩溃。
39.(3)对于第三方程序如部分开源程序,应用程序没有将任务标识id信息(pid)写入指定文件,那么如果程序发生故障,现有两种技术方案均无法对其进行重启恢复。
40.本公开的后台程序监控方法可提供一种技术方案,不仅能实现对后台任务的监控,能实时感知程序故障,第一时间在后台任务结束后将其重启,同时支持对第三方程序进行监控,支持对其进行重启。下面借助于具体的实施例,对本公开中的技术内容进行详细描述。
41.图1是根据一示例性实施例示出的一种后台程序监控方法的流程图。后台程序监控方法10至少包括步骤s102至s108。
42.如图1所示,在s102中,监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件。预设文件可例如为coredump文件。
43.在一个实施例中,可通过文件系统事件监控机制获取coredump文件的生成信息。更具体的,可基于inotify监控预设文件的文件生成目录以获取coredump文件的生成信息。
44.其中,coredump又叫核心转储,当程序运行过程中发生异常,程序异常退出时,由操作系统把程序当前的内存状况存储在一个core文件中,这个文件即为coredump文件。在本公开中,coredump文件可为当进程发生异常所导致进程崩溃时,linux内核生成的一种调试转储文件,其中coredump信息为单个进程在内存中的完整静态信息。在开发人员后期进行故障查询时,可以通过调取该进程的coredump信息,来对该崩溃进程进行调试。
45.其中,inotify是linux内核中文件系统的变化通知机制,能够监测目录、文件操作,如目录新建、修改、删除以及文件创建、修改、删除等。利用linux系统提供的inotify机制,监控coredump文件目录,监控是否有新的coredump文件生成。可创建一个文件描述符,附加一个或多个监视器,然后使用read方法从描述符获取事件。read并不会用光整个周期,它在事件发生之前是被阻塞的。还可利用传统的select系统调用来被动地监控监视器和许多其他输入源。这两种方法都能避免繁忙轮询。
46.在s104中,对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识。当应用意外崩溃终止时,计算机会自动记录下进程crash掉那一刻的内存分配信息、program counter以及堆栈指针等关键信息来生成coredump文件,因此获取到coredump文件后,可过mdb、gdb、lldb等工具解析,以诊断实际进程crash原因。
47.可优化监控任务的后台任务监控清单文件,清单文件每行中增加设备coredump信息,使程序异常崩溃时可以产生coredump信息,通过linux提供的inotify机制实时监控coredump生成目录下的文件,如果生成了coredump文件,通过解析coredump生成的coredump文件获取异常的进程信息,从而第一时间重启后台进程。
48.在s106中,将所述进程信息和监控任务表中的进程信息进行比较。监控表中存储可要进行监控的进程信息。
49.在s108中,在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程。可基于所述进程信息获取所述后台进程的进程名;获取所述进程名对应的文件
信息、参数、配置文件;基于所述文件信息、所述参数、所述配置文件进行所述后台进程的重启。
50.在一个实施例中,在所述进程信息不存在于所述监控任务表中时,不对所述进程信息进行处理。
51.根据本公开的后台程序监控方法,不仅对于通常的后台程序,即使是第三方程序如部分开源程序,在其没有将任务标识id信息(pid)写入指定文件时,同样也可以对其进行实时监控并重启。
52.根据本公开的后台程序监控方法,监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件;对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识;将所述进程信息和监控任务表中的进程信息进行比较;在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程的方式,不仅能对后台任务进行监控,还能够对第三方程序进行监控,实时感知进程和程序故障,在后台任务或第三方程序因故障结束后立即将其重启,保证系统安全运行。
53.应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施例。
54.图2是根据另一示例性实施例示出的一种后台程序监控方法的流程图。图2所示的流程20是对图1所示流程的补充描述。
55.如图2所示,在s202中,获取多个后台任务的进程信息。可例如,获取系统后台任务的进程信息;获取第三方软件后台任务的进程信息。
56.在s204中,将所述多个后台任务的ulimit属性信息设置为rlim_infity。其中,ulimit是一个计算机命令,用于shell启动进程所占用的资源,参数形式有-h设置硬资源限制;-s设置软资源限制;-a显示当前所有的资源限制等。
57.一般来说,将目标进程的ulimit属性信息设置为rlim_infity。通过设置目标进程的ulimit属性,可以将内核所能支持的资源上限最大化的提供给该目标进程,进而保证该目标进程生成coredump信息的大小不会受到限制。
58.在s206中,设置所述预设文件的文件生成目录和文件名格式。coredump文件生成目录及文件名格式可通过sysctl-w kernel.core_pattern命令设置:
59.如sysctl-wkernel.core_pattern=/corefile/core.%e.%p.%t,可以将core文件统一生成到/corefile目录下,产生的文件名为core-进程名-pid-时间戳格式。
60.在s208中,通过所述多个后台任务的进程信息生成所述监控任务表。可将进程名作为主键,依次在监控任务表中存储该进程名相关的进程信息。
61.在一个实施例中,如果有新的coredump文件生成,根据配置的coredump文件名生成格式,解析coredump文件名,获得进程名、任务标识id等信息:
62.如按照文件格式core.%e.%p.%t生成的coredump文件名为core-test-31421-1583371322,其中test为进程名,31421为任务标识id,1583371322为进程崩溃的时间。
63.解析完成后,和配置的待监控任务列表中进程名进行比较,如果不在配置的监控任务列表中,则不需要重启此后台进程,反之则需要重启此后台进程,取得需要重启的后台进程文件信息、参数、配置文件等信息,以进行重启。
64.本公开的后台程序监控方法,通过优化监控任务的后台任务监控清单文件,每行中增加设备coredump信息,进程异常崩溃后生成coredump文件。通过linux系统提供的inotify机制监控coredump文件目录,解析coredump文件名称,获得进程名称及任务标识id信息,实时通知监控程序,从而第一时间对后台进程进行重启,大大提高了重启后台程序的时间,保证了业务的稳定持续。
65.对于第三方程序如部分开源程序,即使应用程序没有将任务标识id信息(pid)写入指定文件,在程序发生故障,基于本公开的后台程序监控方法,也能够对该第三方程序实时进行重启。
66.本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由cpu执行的计算机程序。在该计算机程序被cpu执行时,执行本公开提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
67.此外,需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
68.下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
69.图3是根据一示例性实施例示出的一种后台程序监控装置的框图。如图3所示,后台程序监控装置30包括:监控模块302,信息模块304,比较模块306,重启模块308,任务模块310。
70.监控模块302用于监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件;其中,预设文件可例如为coredump文件。监控模块302还用于通过文件系统事件监控机制获取coredump文件的生成信息。
71.信息模块304用于对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识;
72.比较模块306用于将所述进程信息和监控任务表中的进程信息进行比较;其中,监控表中存储可要进行监控的进程信息。
73.重启模块308用于在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程。重启模块308还用于基于所述进程信息获取所述后台进程的进程名;获取所述进程名对应的文件信息、参数、配置文件;基于所述文件信息、所述参数、所述配置文件进行所述后台进程的重启。
74.任务模块310用于获取多个后台任务的进程信息;通过所述多个后台任务的进程信息生成所述监控任务表。
75.根据本公开的后台程序监控装置,监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件;对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识;将所述进程信息和监控任务表中的进程信息进行比较;在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程的方式,不仅能对后台任务进行监控,还能够对第三方程序进行监控,实时感知进程和程序故障,在后台任务或第三方程序因故障结束后立即将其重启,保证系统安全运行。
76.图4是根据一示例性实施例示出的一种电子设备的框图。
77.下面参照图4来描述根据本公开的这种实施方式的电子设备400。图4显示的电子设备400仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
78.如图4所示,电子设备400以通用计算设备的形式表现。电子设备400的组件可以包括但不限于:至少一个处理单元410、至少一个存储单元420、连接不同系统组件(包括存储单元420和处理单元410)的总线430、显示单元440等。
79.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元410执行,使得所述处理单元410执行本说明书中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元410可以执行如图1,图2中所示的步骤。
80.所述存储单元420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)4201和/或高速缓存存储单元4202,还可以进一步包括只读存储单元(rom)4203。
81.所述存储单元420还可以包括具有一组(至少一个)程序模块4205的程序/实用工具4204,这样的程序模块4205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
82.总线430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
83.电子设备400也可以与一个或多个外部设备400’(例如键盘、指向设备、蓝牙设备等)通信,使得用户能与该电子设备400交互的设备通信,和/或该电子设备400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口450进行。并且,电子设备400还可以通过网络适配器460与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器460可以通过总线430与电子设备400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
84.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图5所示,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述方法。
85.所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
86.所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁
信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
87.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
88.上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:监控预设文件的生成信息,当存在新的预设文件时,获取所述预设文件;对所述预设文件进行解析以获取进程信息,所述进程信息包括进程名和任务标识;将所述进程信息和监控任务表中的进程信息进行比较;在所述进程信息位于所述监控任务表中时,重启所述进程信息对应的后台进程。
89.本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
90.通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施例的方法。
91.以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献