CN111949368A - 应用程序控制方法及装置 - Google Patents
应用程序控制方法及装置 Download PDFInfo
- Publication number
- CN111949368A CN111949368A CN202010650031.7A CN202010650031A CN111949368A CN 111949368 A CN111949368 A CN 111949368A CN 202010650031 A CN202010650031 A CN 202010650031A CN 111949368 A CN111949368 A CN 111949368A
- Authority
- CN
- China
- Prior art keywords
- application
- application program
- abnormally
- application process
- exit
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
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
技术领域
本公开涉及计算机技术领域,尤其涉及应用程序控制方法及装置。
背景技术
随着互联网科技的发展,计算机在人们的工作和生活中被广泛应用。大多数计算机中都会安装数量众多的应用程序,而用户在使用过程中,也经常会同时启动多个应用程序。在应用程序运行过程中,难免会发生后台应用程序非正常退出的情况。非正常退出是指应用程序发生异常退出或者关闭的情况,其中,异常退出是指应用程序自身检测到异常后主动退出,而应用程序崩溃是指操作***检测到应用程序发生异常操作而强制应用程序退出。如果发生非正常退出的是添加到自启动中的应用程序,则应用程序在发生崩溃时可以自动重启;而对于其它应用程序,尤其是用户应用进程应用程序,往往不会添加到自启动中,这种情况下,则需要用户重新启动后才能够正常使用。
很多时候,在重启过程中,需要用户去应用管理器删除其他相关的应用进程,之后,找到需要重启的应用程序图标双击后才能正常的启动。这一过程较为繁琐,对于熟悉计算机以及某些应用的人来说相对简单,但是对于不熟悉的人则可能无从下手。另外,很多应用程序在发生非正常退出时并不会出现特别的提示,对于用户来说,从表面上来看应用程序仍然在运行中,只是无法正常做出响应,这种情况下,很多不具备专业计算机知识的用户并不能准确的识别出应用程序出现了什么问题,是发生了崩溃、还是网络中断或者发生了其它异常。这种情况,对于用户来说也会影响使用效率。
发明内容
本公开实施例提供一种应用程序控制方法及装置,能够解决对于不熟悉计算机以及应用程序的人来说重启非正常退出的应用程序会导致应用程序的使用效率低的问题。所述技术方案如下:
根据本公开实施例的第一方面,提供一种应用程序控制方法,所述方法包括:
监测虚拟机中是否有应用程序发生非正常退出;
当监测到所述虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的所述应用程序进行重启。
本公开实施例提供的应用程序控制方法,包括:监测虚拟机中是否有应用程序发生非正常退出,当监测到虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的应用程序进行重启,其中,可以按照预设处理规则对非正常退出的应用程序进行重启,由于整个重启过程无需用户手动去操作,这样,对于不熟悉计算机以及应用程序的人来说重启过程也是相对简单,不会影响应用程序的使用效率,有效提升了用户体验。
在一个实施例中,所述监测虚拟机中是否有应用程序发生非正常退出,包括:
监测操作***是否向应用进程发送的崩溃类信号;所述崩溃类信号中包括:应用进程标识,所述应用进程标识包括:应用进程名称,和/或,应用进程身份标识号;
当监测到所述操作***向应用进程发送所述崩溃类信号,确定所述崩溃类信号中携带的所述应用进程标识对应的应用程序发生非正常退出。
在一个实施例中,所述监测虚拟机中是否有应用程序发生非正常退出,包括:
获取所述虚拟机的应用管理器中记录的应用信息,所述应用信息包括:应用进程名称和应用进程标识;
将所述应用信息保存至信息表中;
按照预设时间周期继续获取所述虚拟机的应用管理器中记录的应用信息;
根据当前获取的所述应用信息和所述信息表确定是否有应用进程标识消失;
若检测到有应用进程消失,则确定消失的所述应用进程为发生非正常退出的应用程序。
在一个实施例中,所述方法还包括:
捕获退出码;
将所述退出码和所述退出码的捕获时间记录在数据表中;
所述确定消失的所述应用进程为发生非正常退出的应用程序,包括:
判断最近的所述预设时间周期内,在所述数据表中是否有针对所述消失的所述应用进程的退出码;
若没有,则确定所述消失的所述应用进程为发生非正常退出的应用程序。
在一个实施例中,所述方法还包括:
若有,检测所述退出码是否为第一值;所述第一值为正常退出对应的退出码;
当检测到所述退出码不为所述第一值,确定所述应用进程为发生非正常退出的应用程序。
在一个实施例中,所述方法还包括:
根据新获取的所述虚拟机的应用管理器中记录的应用信息更新所述信息表。
在一个实施例中,所述按照预设处理规则对非正常退出的所述应用程序进行重启,包括:
直接重启非正常退出的所述应用程序。
在一个实施例中,所述按照预设处理规则对非正常退出的所述应用程序进行重启,包括:
获取所述非正常退出的应用程序的退出原因;
输出提示信息,所述提示信息包括:所述退出原因和是否重启所述非正常退出的应用程序指示;
若接收到重启响应,则重启所述非正常退出的应用程序。
根据本公开实施例的第二方面,提供一种应用程序控制装置,该装置包括:
监测模块,用于监测虚拟机中是否有应用程序发生非正常退出;
重启模块,用于当监测到所述虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的所述应用程序进行重启。
在一个实施例中,所述监测模块包括:
监测子模块,用于监测操作***是否向应用进程发送的崩溃类信号;所述崩溃类信号中包括:应用进程标识,所述应用进程标识包括:应用进程名称,和/或,应用进程身份标识号;
第一确定子模块,用于当监测到所述操作***向应用进程发送所述崩溃类信号,确定所述崩溃类信号中携带的所述应用进程标识对应的应用程序发生非正常退出。
在一个实施例中,所述监测模块包括:
第一获取子模块,用于获取所述虚拟机的应用管理器中记录的应用信息,所述应用信息包括:应用进程名称和应用进程标识;
保存子模块,用于将所述应用信息保存至信息表中;
第二获取子模块,用于按照预设时间周期继续获取所述虚拟机的应用管理器中记录的应用信息;
第二确定子模块,用于根据当前获取的所述应用信息和所述信息表确定是否有应用进程标识消失;
第三确定子模块,用于若检测到有应用进程消失,则确定消失的所述应用进程为发生非正常退出的应用程序。
在一个实施例中,所述监测模块还包括:
捕获子模块,用于捕获退出码;
记录子模块,用于将所述退出码和所述退出码的捕获时间记录在数据表中;
此时,所述第三确定子模块包括:
判断子模块,用于判断最近的所述预设时间周期内,在所述数据表中是否有针对所述消失的所述应用进程的退出码;
第四确定子模块,用于在所述数据表中没有针对所述消失的所述应用进程的退出码,则确定所述消失的所述应用进程为发生非正常退出的应用程序。
在一个实施例中,上述装置还包括:
检测子模块,用于在所述数据表中有针对所述消失的所述应用进程的退出码,检测所述退出码是否为第一值;所述第一值为正常退出对应的退出码;
第五确定子模块,用于当检测到所述退出码不为所述第一值,确定所述应用进程为发生非正常退出的应用程序。
在一个实施例中,上述装置还包括:
更新子模块,用于根据新获取的所述虚拟机的应用管理器中记录的应用信息更新所述信息表。
在一个实施例中,所述重启模块,包括:
第一重启子模块,用于直接重启非正常退出的所述应用程序。
在一个实施例中,所述重启模块,包括:
获取子模块,用于获取所述非正常退出的应用程序的退出原因;
输出子模块,用于输出提示信息,所述提示信息包括:所述退出原因和是否重启所述非正常退出的应用程序指示;
第二重启子模块,用于若接收到重启响应,则重启所述非正常退出的应用程序。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开实施例提供的相关技术中桌面虚拟化或者云桌面场景基本架构示意图。
图2是本公开实施例提供的本公开中桌面虚拟化或者云桌面场景基本架构示意图。
图3是本公开实施例提供的一种应用程序控制方法的流程图;
图4是本公开实施例提供的一种应用程序控制方法的流程图;
图5是本公开实施例提供的一种应用程序控制方法的流程图;
图6是本公开实施例提供的一种应用程序控制方法的流程图;
图7是本公开实施例提供的一种应用程序控制装置的结构图;
图8是本公开实施例提供的一种应用程序控制装置中监测模块的结构图;
图9是本公开实施例提供的一种应用程序控制装置中监测模块的结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开在桌面虚拟化或者云桌面场景下,给出了用户应用程序非正常退出时的解决方案,能够大大提升用户使用体验。
桌面虚拟化场景和云桌面场景的共同点是:终端设备从云服务器获取服务,终端设备所使用的应用程序运行在云服务器中。不同点是:桌面虚拟化场景中的终端设备是零终端,而云桌面场景下的终端设备则可以是普通PC。
现有技术中,一种示例性的桌面虚拟化或者云桌面场景基本架构示意图可参照图1,终端设备中所使用的应用程序运行在云服务器为其分配的虚拟机中。
在现有技术基础上,本发明在云服务器中增加了后台应用程序监控***,其基本架构可参照图2,本发明中各实施例的执行主体为上述的后台应用程序监控***,以下具体介绍本发明的技术方案:
本公开实施例提供一种应用程序控制方法,如图3所示,该应用程序控制方法包括以下步骤:
101、监测虚拟机中是否有应用程序发生非正常退出。
102、当监测到虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的应用程序进行重启。
其中,非正常退出是指应用程序发生异常退出或者崩溃的情况,其中,异常退出是指应用程序自身检测到异常后主动退出,而应用程序崩溃是指操作***检测到应用程序发生异常操作而强制应用程序退出。
非正常退出的应用程序为未添加到自启动中的应用程序,在相关技术中需要用户手动去重启的应用程序。
后台应用程序监控服务启动时,后台应用程序监控***对各个虚拟机进行监控,以确定各虚拟机中是否有应用程序发生非正常退出;在后台监控***监测到虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的应用程序进行重启,由于整个重启过程无需用户手动去操作,这样,对于不熟悉计算机以及应用程序的人来说重启过程也是相对简单,不会影响应用程序的使用效率,有效提升了用户体验。
本公开实施例提供的应用程序控制方法,包括:监测虚拟机中是否有应用程序发生非正常退出,当监测到虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的应用程序进行重启,其中,可以按照预设处理规则对非正常退出的应用程序进行重启,由于整个重启过程无需用户手动去操作,这样,对于不熟悉计算机以及应用程序的人来说重启过程也是相对简单,不会影响应用程序的使用效率,有效提升了用户体验。
在一个实施例中,如图4所示,上述步骤101包括以下子步骤:
1011、监测操作***是否向应用进程发送的崩溃类信号;崩溃类信号中包括:应用进程标识,应用进程标识包括:应用进程名称,和/或,应用进程身份标识号。
1012、当监测到操作***向应用进程发送崩溃类信号,确定崩溃类信号中携带的应用进程标识对应的应用程序发生非正常退出。
具体的,在本发明的一种可选实施方式中,后台应用程序监控***还可以不断捕获操作***向应用进程发送的崩溃(英文:crash)类信号,如果一旦捕获到crash类信号则可以直接确定相应应用程序发生了生非正常退出(此时的非正常退出为应用程序崩溃崩溃),并进行102的非正常退出处理后继续执行1011。
这是因为,当应用程序崩溃时,操作***通常会向相应应用进程发送crash类信号,crash类信号中携带相应应用进程的应用进程名称和/或应用进程身份标识号(IDentity,简称为:ID)信息。因此,可以通过检测crash类信号来直接确定应用程序是否发生崩溃。
下面将常见的crash类信号罗列如下:
1)SIGHUP:当用户退出shell时,由该shell启动的所有应用进程将收到这个信号,默认动作为终止应用进程;
2)SIGINT:当用户按下了<Ctrl+C>组合键时,用户终端向正在运行中的由该终端启动的应用程序发出此信号。默认动作为终止里程。
3)SIGQUIT:当用户按下<ctrl+\>组合键时产生该信号,用户终端向正在运行中的由该终端启动的应用程序发出些信号。默认动作为终止应用进程。
4)SIGILL:CPU检测到某应用进程执行了非法指令。默认动作为终止应用进程并产生core文件。
5)SIGTRAP:该信号由断点指令或其他trap指令产生。默认动作为终止里程并产生core文件。
6)SIGABRT:调用abort函数时产生该信号。默认动作为终止应用进程并产生core文件。
7)SIGBUS:非法访问内存地址,包括内存对齐出错,默认动作为终止应用进程并产生core文件。
8)SIGFPE:在发生致命的运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误。默认动作为终止应用进程并产生core文件。
9)SIGKILL:无条件终止应用进程。本信号不能被忽略,处理和阻塞。默认动作为终止应用进程。它向***管理员提供了可以杀死任何应用进程的方法。
10)SIGUSE1:用户定义的信号。即应用程序员可以在应用程序中定义并使用该信号。默认动作为终止应用进程。
11)SIGSEGV:指示应用进程进行了无效内存访问。默认动作为终止应用进程并产生core文件。
12)SIGUSR2:这是另外一个用户自定义信号,应用程序员可以在应用程序中定义并使用该信号。默认动作为终止应用进程。
13)SIGPIPE:Broken pipe向一个没有读端的管道写数据。默认动作为终止应用进程。
14)SIGALRM:定时器超时,超时的时间由***调用alarm设置。默认动作为终止应用进程。
15)SIGTERM:应用程序结束信号,与SIGKILL不同的是,该信号可以被阻塞和终止。通常用来要示应用程序正常退出。执行shell命令Kill时,缺省产生这个信号。默认动作为终止应用进程。
16)SIGCHLD:子应用进程结束时,父应用进程会收到这个信号。默认动作为忽略这个信号。
SIGCONT:停止应用进程的执行。信号不能被忽略,处理和阻塞。默认动作为终止应用进程。
18)SIGTTIN:后台应用进程读终端控制台。默认动作为暂停应用进程。
19)SIGTSTP:停止应用进程的运行。按下<ctrl+z>组合键时发出这个信号。默认动作为暂停应用进程。
21)SIGTTOU:该信号类似于SIGTTIN,在后台应用进程要向终端输出数据时发生。默认动作为暂停应用进程。
22)SIGURG:套接字上有紧急数据时,向当前正在运行的应用进程发出些信号,报告有紧急数据到达。如网络带外数据到达,默认动作为忽略该信号。
23)SIGXFSZ:应用进程执行时间超过了分配给该应用进程的CPU时间,***产生该信号并发送给该应用进程。默认动作为终止应用进程。
24)SIGXFSZ:超过文件的最大长度设置。默认动作为终止应用进程。
25)SIGVTALRM:虚拟时钟超时时产生该信号。类似于SIGALRM,但是该信号只计算该应用进程占用CPU的使用时间。默认动作为终止应用进程。
26)SGIPROF:类似于SIGVTALRM,它不公包括该应用进程占用CPU时间还包括执行***调用时间。默认动作为终止应用进程。
27)SIGWINCH:窗口变化大小时发出。默认动作为忽略该信号。
28)SIGIO:此信号向应用进程指示发出了一个异步IO事件。默认动作为忽略。
29)SIGPWR:关机。默认动作为终止应用进程。
30)SIGSYS:无效的***调用。默认动作为终止应用进程并产生core文件。
31)SIGRTMIN~(64)SIGRTMAX:LINUX的实时信号,它们没有固定的含义(可以由用户自定义)。所有的实时信号的默认动作都为终止应用进程。
通过崩溃类信号确定非正常退出的应用程序,可以有效提升判断的时延和精准度,有效提升了用户体验。
在一个实施例中,如图5所示,上述步骤101包括以下子步骤:
1013、获取虚拟机的应用管理器中记录的应用信息,应用信息包括:应用进程名称和应用进程标识。
1014、将应用信息保存至信息表中。
1015、按照预设时间周期继续获取虚拟机的应用管理器中记录的应用信息。
1016、根据当前获取的应用信息和信息表确定是否有应用进程标识消失。
1017、若检测到有应用进程消失,则确定消失的应用进程为发生非正常退出的应用程序。
初始阶段,后台应用程序监控***为当前虚拟机创建信息表,并将应用管理器中查询到的信息记录在信息表中,其中,所查询的信息包括:应用进程名称和应用进程ID;后台应用程序监控***按照预设周期对应用管理器进行查询,以确定是否有应用进程ID消失,当测到有应用进程消失,则确定消失的应用进程为发生非正常退出的应用程序。
具体的,确定是否有应用进程ID消失的具体方式是将当前应用管理器中的信息与信息表中记录的信息进行比对,判断是否有信息表中有,而当前应用管理器中没有的应用进程ID,如果有,则确定有应用进程ID消失。
在一个实施例中,上述方法还包括以下子步骤A1-A2,此时,如图6所示,上述步骤1017包括以下子步骤10171-10174:
A1、捕获退出码;
A2、将退出码和退出码的捕获时间记录在数据表中;
10171、判断最近的预设时间周期内,在数据表中是否有针对消失的应用进程的退出码;
10172、若没有,则确定消失的应用进程为发生非正常退出的应用程序。
10173、若有,检测退出码是否为第一值;第一值为正常退出对应的退出码;
10174、当检测到退出码不为第一值,确定应用进程为发生非正常退出的应用程序。
在执行上述步骤1015或1016的期间,后台应用程序监控***持续捕获当前虚拟机中应用进程向操作***发送的退出码,并且后台应用程序监控***需要将本地对捕获到的退出码记录在本地的数据表中,实际实现时,数据表中可以只记录最近的一段时间(该时间最好大于,也可以等于1015中所说的预设周期)内所捕获到的退出码,同时记录相应退出码捕获的时间。
如果有应用进程ID消失,则判断最近一次查询到该应用进程ID的时间至当前时间之间的一段时间内(也即,最近的预设时间周期内),在数据表中是否有针对该应用进程的退出码;如果有,如果有针对相应应用进程的退出码,则确定退出码的值是否为第一值,如果为第一值,则确定应用进程为正常退出的应用程序;如果不为第一值,则确定应用进程为发生非正常退出的应用程序;如果没有针对相应应用进程的退出码,则可以直接确定当前应用程序崩溃,然后进行应用程序非正常退出处理。
上述的第一值为“0”,也就是,判断退出码(英文:exit_code)是否等于0。一般情况下,如果由用户正常退出或者发生异常退出时都会产生exit_code,该exit_code会由相应应用进程发送给操作***。不同的是,当用户正常退出时,exit_code等于0,而如果是应用程序出现异常后主动退出,则exit_code不等于0。因此,如果捕获到exit_code,则可以根据其取值来判断当前应用程序为正常退出还是异常退出。如果没有产生exit_code则可以认为是应用程序发生了崩溃。
进一步的,还会根据新获取的虚拟机的应用管理器中记录的应用信息更新信息表。也即,在每一次查询应用管理器时,后台应用程序监控***需要对当前虚拟机对应的信息表进行更新。
在一个实施例中,上述步骤102包括以下子步骤:
B1、获取非正常退出的应用程序的退出原因。
其中,获取非正常退出的应用程序的退出原因可以通过上述各个实施例中非正常退出的应用程序的判断过程中获取到,此处不再赘述。
B2、输出提示信息,提示信息包括:退出原因和是否重启非正常退出的应用程序指示。
B3、若接收到重启响应,则重启非正常退出的应用程序。
判断非正常退出类型是应用程序异常退出还是应用程序崩溃;如果是应用程序异常退出,则通知用户应用程序发生异常后退出,并请用户选择是否重启该应用程序;如果应用程序崩溃,则通知用户应用程序崩溃,并请用户选择是否重启该应用程序;如果用户选择重启该应用程序,则后台应用程序监控***通过相应虚拟机重启相应应用程序。
相关技术中,很多应用程序在发生非正常退出时并不会出现特别的提示,对于用户来说,从表面上来看应用程序仍然在运行中,只是无法正常做出响应,这种情况下,很多不具备专业计算机知识的用户并不能准确的识别出应用程序出现了什么问题,是发生了崩溃、还是网络中断或者发生了其它异常。这种情况,对于用户来说也会影响使用效率。而本实施例中,会向用户展示应用程序退出原因,从而即使用户不具备专业计算机知识,也可以准确的识别出应用程序出现了什么问题,是发生了崩溃、还是网络中断或者发生了其它异常,从而提升了使用效率。
在一个实施例中,上述步骤102包括以下子步骤:
直接重启非正常退出的应用程序。
当然,在实际实现时,也可以不由用户进行选择,而直接通知虚拟机重启应用程序。
具体的,重启应用程序的过程为:后台应用程序监控***向当前虚拟机的操作***发送一个应用程序重启请求,该请求中携带非正常退出的应用程序的信息(应用程序名称或应用进程ID、应用进程名称等等);收到该请求的操作***,根据接收到的应用程序信息,在当前应用管理器中找到与该应用程序相关的正在运行的应用进程(一般为服务应用进程,应用程序启动时除了启动应用进程外还可能启动一个或多个服务应用进程)后删除这些正在运行的应用进程,之后,重启相应应用程序。
下面通过实施例详细介绍本公开中的方案,本发明的主要处理流程包括C1-C2:
C1、后台应用程序监控服务启动时,后台应用程序监控***对各个虚拟机进行监控,以确定各虚拟机中是否有应用程序发生非正常退出;
实际实现时,后台应用程序监控***可以通过以下方式确定各个虚拟机中是否有应用程序发生崩溃:
后台应用程序监控***实时监控各个虚拟机内的应用程序运行情况,这个可以通过定期监控各个虚拟机的应用管理器来实现。具体是:后台应用程序监控***按照预设周期(一分钟、两分钟等等)查询各个虚拟机的应用管理器,将该应用管理器中的信息记录在本地为该虚拟机创建的信息表中,主要信息包括:应用进程名称和应用进程ID。一个应用程序启动的时候,会启动一个应用进程(应用管理器中显示应用进程名称和应用进程ID)。在每一次查询应用管理器时,后台应用程序监控***需要对当前虚拟机对应的信息表进行更新,并检查是否有消失的应用进程ID,如果有,则进一步根据其它信息,比如,应用程序向操作***返回的退出码或者crash信号等来确定当前是否有应用程序出现非正常退出。
具体的,后台应用程序监控***对各个虚拟机分别进行监控,以确定各虚拟机中是否有应用程序发生非正常退出的处理流程,包括以下步骤:
C11、初始阶段,后台应用程序监控***为当前虚拟机创建信息表,并将应用管理器中查询到的信息记录在信息表中;
具体的,所查询的信息包括:应用进程名称和应用进程ID;
C12、后台应用程序监控***按照预设周期对应用管理器进行查询,以确定是否有应用进程ID消失,在此期间,后台应用程序监控***持续捕获当前虚拟机中应用进程向操作***发送的退出码;
具体的,确定是否有应用进程ID消失的具体方式是将当前应用管理器中的信息与信息表中记录的信息进行比对,判断是否有信息表中有,而当前应用管理器中没有的应用进程ID,如果有,则确定有应用进程ID消失。
另外,后台应用程序监控***需要将本地对捕获到的退出码记录在本地的数据表中,实际实现时,数据表中可以只记录最近的一段时间(该时间最好大于,也可以等于C12中所说的预设周期)内所捕获到的退出码,同时记录相应退出码捕获的时间。
C13、如果有应用进程ID消失,则判断最近一次查询到该应用进程ID的时间至当前时间之间的一段时间内,在数据表中是否有针对该应用进程的退出码;如果有,则转至步骤C14;否则,转至步骤C15;
C14、如果有针对相应应用进程的退出码,则确定退出码的值是否为0?如果为0,则转至C16;如果不为0,则转至C17;
也就是,判断exit_code是否等于0。一般情况下,如果由用户正常退出或者发生异常退出时都会产生exit_code,该exit_code会由相应应用进程发送给操作***。不同的是,当用户正常退出时,exit_code等于0,而如果是应用程序出现异常后主动退出,则exit_code不等于0。因此,如果捕获到exit_code,则可以根据其取值来判断当前应用程序为正常退出还是异常退出。如果没有产生exit_code则可以认为是应用程序发生了崩溃。
C15、如果没有针对相应应用进程的退出码,则可以直接确定当前应用程序崩溃,然后进行应用程序非正常退出处理后转至C12;
C16、确定当前应用程序为正常退出,不做处理,并转至C12;
C17、确定当前应用程序为异常退出,进行应用程序非正常退出处理,并转至C12;
优选的,在本发明的一种可选实施方式中,C12中后台应用程序监控***还可以不断捕获操作***向应用进程发送的crash类信号,如果一旦捕获到crash类信号则可以直接确定相应应用程序发生了崩溃,并进行非正常退出处理后转至C12继续执行。如果没有捕获到crash类信号则仍按照C13-C17进行处理。
这是因为,当应用程序崩溃时,操作***通常会向相应应用进程发送crash类信号,信号中携带相应应用进程的应用进程名称和/或应用进程ID信息。因此,可以通过检测crash类信号来直接确定应用程序是否发生崩溃。
C2、当有应用程序发生非正常退出时,后台应用程序监控***进行非正常退出处理。
具体的,非正常退出处理包括:
判断非正常退出类型是应用程序异常退出还是应用程序崩溃;
如果是应用程序异常退出,则通知用户应用程序发生异常后退出,并请用户选择是否重启该应用程序;如果应用程序崩溃,则通知用户应用程序崩溃,并请用户选择是否重启该应用程序;
如果用户选择重启该应用程序,则后台应用程序监控***通过相应虚拟机重启相应应用程序。
当然,在实际实现时,也可以不由用户进行选择,而直接通知虚拟机重启应用程序。
具体的,重启应用程序的过程为:后台应用程序监控***向当前虚拟机的操作***发送一个应用程序重启请求,该请求中携带非正常退出的应用程序的信息(应用程序名称或应用进程ID、应用进程名称等等);收到该请求的操作***,根据接收到的应用程序信息,在当前应用管理器中找到与该应用程序相关的正在运行的应用进程(一般为服务应用进程,应用程序启动时除了启动应用进程外还可能启动一个或多个服务应用进程)后删除这些正在运行的应用进程,之后,重启相应应用程序。
基于上述图3-图6对应的实施例中所描述的应用程序控制方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。
本公开实施例提供一种应用程序控制装置,如图7所示,该装置包括:
监测模块11,用于监测虚拟机中是否有应用程序发生非正常退出;
重启模块12,用于当监测到所述虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的所述应用程序进行重启。
在一个实施例中,如图8所示,所述监测模块11包括:
监测子模块111,用于监测操作***是否向应用进程发送的崩溃类信号;所述崩溃类信号中包括:应用进程标识,所述应用进程标识包括:应用进程名称,和/或,应用进程身份标识号;
第一确定子模块112,用于当监测到所述操作***向应用进程发送所述崩溃类信号,确定所述崩溃类信号中携带的所述应用进程标识对应的应用程序发生非正常退出。
在一个实施例中,如图9所示,所述监测模块11包括:
第一获取子模块113,用于获取所述虚拟机的应用管理器中记录的应用信息,所述应用信息包括:应用进程名称和应用进程标识;
保存子模块114,用于将所述应用信息保存至信息表中;
第二获取子模块115,用于按照预设时间周期继续获取所述虚拟机的应用管理器中记录的应用信息;
第二确定子模块116,用于根据当前获取的所述应用信息和所述信息表确定是否有应用进程标识消失;
第三确定子模块117,用于若检测到有应用进程消失,则确定消失的所述应用进程为发生非正常退出的应用程序。
在一个实施例中,所述监测模块11还包括:
捕获子模块,用于捕获退出码;
记录子模块,用于将所述退出码和所述退出码的捕获时间记录在数据表中;
此时,所述第三确定子模块117包括:
判断子模块,用于判断最近的所述预设时间周期内,在所述数据表中是否有针对所述消失的所述应用进程的退出码;
第四确定子模块,用于在所述数据表中没有针对所述消失的所述应用进程的退出码,则确定所述消失的所述应用进程为发生非正常退出的应用程序。
在一个实施例中,上述装置还包括:
检测子模块,用于在所述数据表中有针对所述消失的所述应用进程的退出码,检测所述退出码是否为第一值;所述第一值为正常退出对应的退出码;
第五确定子模块,用于当检测到所述退出码不为所述第一值,确定所述应用进程为发生非正常退出的应用程序。
在一个实施例中,上述装置还包括:
更新子模块,用于根据新获取的所述虚拟机的应用管理器中记录的应用信息更新所述信息表。
在一个实施例中,所述重启模块12,包括:
第一重启子模块,用于直接重启非正常退出的所述应用程序。
在一个实施例中,所述重启模块12,包括:
获取子模块,用于获取所述非正常退出的应用程序的退出原因;
输出子模块,用于输出提示信息,所述提示信息包括:所述退出原因和是否重启所述非正常退出的应用程序指示;
第二重启子模块,用于若接收到重启响应,则重启所述非正常退出的应用程序。
基于上述图3-图6对应的实施例中所描述的应用程序控制方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read Only Memory,ROM)、随机存取存储器(英文:RandomAccess Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1和图3对应的实施例中所描述的数据传输方法,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (9)
1.一种应用程序控制方法,其特征在于,所述方法包括:
监测虚拟机中是否有应用程序发生非正常退出;
当监测到所述虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的所述应用程序进行重启。
2.根据权利要求1所述的方法,其特征在于,所述监测虚拟机中是否有应用程序发生非正常退出,包括:
监测操作***是否向应用进程发送的崩溃类信号;所述崩溃类信号中包括:应用进程标识,所述应用进程标识包括:应用进程名称,和/或,应用进程身份标识号;
当监测到所述操作***向应用进程发送所述崩溃类信号,确定所述崩溃类信号中携带的所述应用进程标识对应的应用程序发生非正常退出。
3.根据权利要求1所述的方法,其特征在于,所述监测虚拟机中是否有应用程序发生非正常退出,包括:
获取所述虚拟机的应用管理器中记录的应用信息,所述应用信息包括:应用进程名称和应用进程标识;
将所述应用信息保存至信息表中;
按照预设时间周期继续获取所述虚拟机的应用管理器中记录的应用信息;
根据当前获取的所述应用信息和所述信息表确定是否有应用进程标识消失;
若检测到有应用进程消失,则确定消失的所述应用进程为发生非正常退出的应用程序。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
捕获退出码;
将所述退出码和所述退出码的捕获时间记录在数据表中;
所述确定消失的所述应用进程为发生非正常退出的应用程序,包括:
判断最近的所述预设时间周期内,在所述数据表中是否有针对所述消失的所述应用进程的退出码;
若没有,则确定所述消失的所述应用进程为发生非正常退出的应用程序。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若有,检测所述退出码是否为第一值;所述第一值为正常退出对应的退出码;
当检测到所述退出码不为所述第一值,确定所述应用进程为发生非正常退出的应用程序。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据新获取的所述虚拟机的应用管理器中记录的应用信息更新所述信息表。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述按照预设处理规则对非正常退出的所述应用程序进行重启,包括:
直接重启非正常退出的所述应用程序。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述按照预设处理规则对非正常退出的所述应用程序进行重启,包括:
获取所述非正常退出的应用程序的退出原因;
输出提示信息,所述提示信息包括:所述退出原因和是否重启所述非正常退出的应用程序指示;
若接收到重启响应,则重启所述非正常退出的应用程序。
9.一种应用程序控制装置,其特征在于,所述装置包括:
监测模块,用于监测虚拟机中是否有应用程序发生非正常退出;
重启模块,用于当监测到所述虚拟机中有应用程序发生非正常退出时,按照预设处理规则对非正常退出的所述应用程序进行重启。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010650031.7A CN111949368A (zh) | 2020-07-07 | 2020-07-07 | 应用程序控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010650031.7A CN111949368A (zh) | 2020-07-07 | 2020-07-07 | 应用程序控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111949368A true CN111949368A (zh) | 2020-11-17 |
Family
ID=73341598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010650031.7A Pending CN111949368A (zh) | 2020-07-07 | 2020-07-07 | 应用程序控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949368A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114241679A (zh) * | 2021-12-08 | 2022-03-25 | 广东电网有限责任公司 | 一种自助终端设备防误触碰方法和*** |
CN114826981A (zh) * | 2022-04-27 | 2022-07-29 | 广东悦伍纪网络技术有限公司 | 一种云手机内应用常驻的实现***及方法 |
CN115525464A (zh) * | 2022-09-30 | 2022-12-27 | 湖北省广播电视局无线台管理中心 | 一种应对应用程序崩溃的***、方法和存储介质 |
CN116701134A (zh) * | 2022-10-14 | 2023-09-05 | 荣耀终端有限公司 | 一种数据处理方法和电子设备 |
CN117032881A (zh) * | 2023-07-31 | 2023-11-10 | 广东保伦电子股份有限公司 | 一种虚拟机异常检测和恢复的方法、装置及存储介质 |
-
2020
- 2020-07-07 CN CN202010650031.7A patent/CN111949368A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114241679A (zh) * | 2021-12-08 | 2022-03-25 | 广东电网有限责任公司 | 一种自助终端设备防误触碰方法和*** |
CN114826981A (zh) * | 2022-04-27 | 2022-07-29 | 广东悦伍纪网络技术有限公司 | 一种云手机内应用常驻的实现***及方法 |
CN114826981B (zh) * | 2022-04-27 | 2023-09-22 | 广东悦伍纪网络技术有限公司 | 一种云手机内应用常驻的实现***及方法 |
CN115525464A (zh) * | 2022-09-30 | 2022-12-27 | 湖北省广播电视局无线台管理中心 | 一种应对应用程序崩溃的***、方法和存储介质 |
CN116701134A (zh) * | 2022-10-14 | 2023-09-05 | 荣耀终端有限公司 | 一种数据处理方法和电子设备 |
CN116701134B (zh) * | 2022-10-14 | 2024-05-17 | 荣耀终端有限公司 | 一种数据处理方法和电子设备 |
CN117032881A (zh) * | 2023-07-31 | 2023-11-10 | 广东保伦电子股份有限公司 | 一种虚拟机异常检测和恢复的方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111949368A (zh) | 应用程序控制方法及装置 | |
CN110515820B (zh) | 一种服务器故障维护方法、装置、服务器及存储介质 | |
US8601493B2 (en) | Application controlling apparatus and storage medium which stores software for the apparatus | |
CN108427616B (zh) | 后台程序监控方法及监控装置 | |
CN108287769B (zh) | 一种信息处理方法及装置 | |
CN111124761B (zh) | 一种设备重启方法、装置、设备及介质 | |
CN114756406A (zh) | 应用程序崩溃的处理方法、装置及电子设备 | |
JPH10214208A (ja) | ソフトウェアの異常監視方式 | |
CN114184885A (zh) | 一种故障检测方法、装置及存储介质 | |
CN116860552A (zh) | 应用程序运行监测方法、装置、电子设备及存储介质 | |
CN110555009B (zh) | 一种网络文件***nfs服务的处理方法及装置 | |
CN109062718B (zh) | 一种服务器及数据处理方法 | |
CN115562900B (zh) | Amd服务器***安装断电处理方法、装置、设备及介质 | |
CN109922014B (zh) | 一种交换机冷热启动判断方法及*** | |
CN111352803A (zh) | 业务数据处理方法、装置、设备和存储介质 | |
JP2001331348A (ja) | プロセスメモリ消費量増加傾向検出方式 | |
CN107179911B (zh) | 一种重启管理引擎的方法和设备 | |
CN112463348B (zh) | 一种定时任务处理方法及装置 | |
CN113918407A (zh) | 一种管理服务进程的方法、装置及可读存储介质 | |
CN114817057A (zh) | 测试线程卡顿的方法及装置、电子设备、存储介质 | |
CN110740382B (zh) | 避免电视机非期望自动重启方法、装置、电视机及介质 | |
CN111400094A (zh) | 一种服务器***恢复出厂设置的方法、装置、设备及介质 | |
CN110908866A (zh) | 软件监控方法及相关设备 | |
CN114328083B (zh) | 一种wdt监控方法、装置及介质 | |
JPH0612276A (ja) | プログラム制御方式 |
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 |