CN112540874A - 智能设备死机日志采集方法、系统、电子设备及存储介质 - Google Patents
智能设备死机日志采集方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112540874A CN112540874A CN202011420573.1A CN202011420573A CN112540874A CN 112540874 A CN112540874 A CN 112540874A CN 202011420573 A CN202011420573 A CN 202011420573A CN 112540874 A CN112540874 A CN 112540874A
- Authority
- CN
- China
- Prior art keywords
- log
- hard disk
- memory
- hot start
- running
- 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/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了智能设备死机日志采集方法、系统、电子设备及存储介质,其方法包括:当检测到panic后触发热启动;当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;若智能设备启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;若智能设备冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在内存中;当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。本发明利用死机时先热启动抓取到pstore,继而再次触发冷启动来开机,以获取有效的运行日志。
Description
技术领域
本发明涉及计算机设备技术领域,尤指一种智能设备死机日志采集方法、系统、电子设备及存储介质。
背景技术
Pstore是persistent storage的缩写,即永久性存储。Pstore是一种数据读取机制,当Kernel发生异常时,Pstore机制能将保存到RAM或硬盘等存储区域的Kernel的运行日志信息读取出来,以文件系统的方式挂载在sys系统的目录树上。Kernel为实时操作系统,是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统,提供及时响应和高可靠性是其主要特点。Pstore机制的具体过程为:Ramoops(采用ram保存oops信息的一个功能)将Android设备本次运行异常的Kerneloops信息作为系统日志写入内存中的某个特定地址,在设备带电重启(即热启动)后,Pstore机制从这个特定的内存地址中读取出系统日志,以文件系统的方式挂载在sys系统的目录树上,供用户读取。
但因为warm reset(即热启动,在不关闭电源的情况,由软件控制重启计算机)会导致pmic(Power Management IC,电源管理集成电路)或其他部分状态异常,例如电池电量损耗不正常等,现在大部分的Android平台设备出厂时,都会设置机器为hard-reset(即冷启动,关闭电源,再打开电源重启计算机),而不是warm-reset。这样一来,Pstore的功能就不能用了,获取到的log数据基本全是乱码。则当设备panic死机时,无法抓取到完整有效的panic的日志信息。
发明内容
本发明的目的是提供一种智能设备死机日志采集方法、系统、电子设备及存储介质,利用死机时先热启动抓取到pstore,继而再次触发冷启动来开机,以获取有效的运行日志。
本发明提供的技术方案如下:
本发明提供一种智能设备死机日志采集方法,包括以下步骤:
当检测到panic后触发热启动;
当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在内存中;
当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
进一步的,当检测到panic后触发热启动包括步骤:
当检测到panic后,刷新缓存,保持所述内存上电,触发热启动。
进一步的,若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动包括步骤:
若启动时检测到所述热启动标志位,则kernel生成运行日志并存储在内存中;
当硬盘分区挂载完成,将所述内存中的所述运行日志保存至硬盘,然后触发冷启动。
进一步的,若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在所述内存中之后包括步骤:
若冷启动时检测到所述硬盘中存在所述运行日志,且所述运行日志的文件长度不为零,则将所述硬盘中的所述运行日志转存在所述内存中;
删除所述硬盘中的所述运行日志。
本发明还提供一种智能设备死机日志采集系统,其特征在于,包括:
热启动触发模块,用于当检测到panic后触发热启动;
标志位处理模块,与所述热启动触发模块通信连接,用于当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
冷启动触发模块,与所述标志位处理模块通信连接,用于若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
日志转换模块,与所述冷启动触发模块通信连接,用于若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在内存中;
日志上传模块,与所述日志转换模块通信连接,用于当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
进一步的,还包括:
所述热启动触发模块,用于当检测到panic后,刷新缓存,保持所述内存上电,触发热启动。
进一步的,所述冷启动触发模块包括:
日志生成单元,用于若启动时检测到所述热启动标志位,则kernel生成运行日志并存储在内存中;
冷启动触发单元,与所述日志生成单元通信连接,用于当硬盘分区挂载完成,将所述内存中的所述运行日志保存至硬盘,然后触发冷启动。
进一步的,所述日志转换模块包括:
日志转换单元,用于若冷启动时检测到所述硬盘中存在所述运行日志,且所述运行日志的文件长度不为零,则将所述硬盘中的所述运行日志转存在所述内存中;
日志处理单元,与所述日志转换单元通信连接,用于删除所述硬盘中的所述运行日志。
本发明还提供一种电子设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器,用于执行所述存储器上所存放的计算机程序,实现上述的ubifs格式镜像的软件挂载方法。
本发明还提供一种存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述的ubifs格式镜像的软件挂载方法。
通过本发明提供的一种智能设备死机日志采集方法、系统、电子设备及存储介质,利用死机时先热启动抓取到pstore,继而再次触发冷启动来开机,以获取有效的运行日志。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种智能设备死机日志采集方法、系统、电子设备及存储介质的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明一种智能设备死机日志采集方法的一个实施例的流程图;
图2是本发明一种智能设备死机日志采集方法的另一个实施例的流程图;
图3是本发明一种智能设备死机日志采集方法的另一个实施例的流程图;
图4是本发明一种智能设备死机日志采集方法的另一个实施例的流程图;
图5是本发明一种智能设备死机日志采集系统的一个实施例的结构示意图。
附图标号:
100智能设备死机日志采集系统
110热启动触发模块
120标志位处理模块
130冷启动触发模块 131日志生成单元 132冷启动触发单元
140日志转换模块 141日志转换单元 142日志处理单元
150日志上传模块
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所述描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或集合的存在或添加。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
另外,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
本发明的一个实施例,参见图1所示,一种智能设备死机日志采集方法,包括:
S100当检测到panic后触发热启动;
S200当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
S300若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
S400若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在所述内存中;
S500当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
具体的,冷启动(在直接关闭电源时),可能对硬件(如磁盘)有较大的影响,可能导致其损坏;另外,磁盘的写入一般存在cache(缓存),直接关闭电源可能导致cache没有flush,可能导致磁盘中数据出现错误。而pstore机制一般也是将运行日志存储在内存(RAM,random access memory,即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序)中,当冷启动关闭电源时,运行日志会丢失。
本实施例主要是基于使用Android设备,采用pstore功能来抓取panic时死机日志,panic需要保留warm reset(热启动)。panic是英文中是惊慌的意思,Linux Kernelpanic正如其名,linux kernel不知道如何走了,它会尽可能把它此时能获取的全部信息都打印出来。
智能设备panic后自动触发warm reset,即在不关闭电源的情况,由软件控制重启计算机,热启动时能够获取到完整有效的运行日志。当uboot检测到时warm reset时,在命令行解析库中增加热启动标志位,命令行解析库例如cmdline,cmdline是一个非常easy好用的C++命令行解析库,热启动标志位例如warm_reset=1,以表明当前重启为热重启。其中,uboot属于bootloader(引导程序)的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核。所以,由上面描述的UBOOT需要具有读写flash的能力。uboot刚开始被放到flash中,板子上电后,会自动把其中的一部分代码拷到内存中执行,这部分代码负责把剩余的uboot代码拷到内存中,然后uboot代码再把kernel部分代码也拷到内存中,并且启动,内核启动后,挂着根文件系统,执行应用程序。
当启动时检测到命令行解析库中存在相应的热启动标志位,表示智能设备上一次运行是crash(在正常计算机系统运行过程中,因某种原因宕机,或主机、程序停止工作等情况),出现异常,因此需要抓取pstore。kernel生成运行日志,并将运行日志转存至硬盘(ROM,Read-Only Memory,只读内存,断电后可以保存数据)中,避免后续冷启动过程中由于断电导致获取的运行日志丢失或出错。其中,运行日志包含智能设备上次发生异常时的操作系统日志和相互之间的调用栈,以便后续获取之后能够分析智能设备的运行逻辑,进而得出其出错原因。
当将运行日志转存至硬盘后,智能设备主动触发hard reset(冷启动),智能设备冷启动时将之前热启动时存储在硬盘(ROM)中的运行日志转存到内存(RAM)中,以便智能设备运行处理。
当进程文件(例如bugreport)检测到内存中的运行日志,则抓取pstore上传到服务器。bugreport或者bugreport.exe是一个进程文件,这个文件的作用是对程序出错进行返回报告,一旦其所属软件的程序运行错误,其主程序便会调用该进程,将发生的错误以E-mail形式发送回官方服务器。
本发明利用死机时先热启动抓取到pstore,并转存至硬盘中,避免数据丢失,继而再次触发冷启动来开机,以获取有效的运行日志。
本发明的另一实施例,参见图2所示,一种智能设备死机日志采集方法,包括:
S110当检测到panic后,刷新缓存,保持所述内存上电,触发热启动;
S200当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
S300若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
S400若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在所述内存中;
S500当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
具体的,智能设备panic后自动触发warm reset,即在不关闭电源的情况,由软件控制重启计算机,此时刷新缓存,保持内存(RAM)上电,而kernel也是将获取的运行数据保存在内存中,保持RAM上电从而保证热启动时能够获取到完整有效的运行日志。当uboot检测到时warm reset时,在命令行解析库中增加热启动标志位,以表明当前重启为热重启。
当启动时检测到命令行解析库中存在相应的热启动标志位,表示智能设备上一次运行是crash,出现异常,因此需要抓取pstore。kernel生成运行日志,并将运行日志转存至硬盘(ROM,Read-Only Memory,只读内存,断电后可以保存数据)中,避免后续冷启动过程中由于断电导致获取的运行日志丢失或出错。其中,运行日志包含智能设备上次发生异常时的操作系统日志和相互之间的调用栈,以便后续获取之后能够分析智能设备的运行逻辑,进而得出其出错原因。
当将运行日志转存至硬盘后,智能设备主动触发hard reset(冷启动),智能设备冷启动时将之前热启动时存储在硬盘(ROM)中的运行日志转存到内存(RAM)中,以便智能设备运行处理。
当进程文件(例如bugreport)检测到内存中的运行日志,则抓取pstore上传到服务器。bugreport或者bugreport.exe是一个进程文件,这个文件的作用是对程序出错进行返回报告,一旦其所属软件的程序运行错误,其主程序便会调用该进程,将发生的错误以E-mail形式发送回官方服务器。
本申请中当检测到panic后,刷新缓存,保持内存上电,RAM上电从而保证热启动时能够获取到完整有效的运行日志。
本发明的另一实施例,参见图3所示,一种智能设备死机日志采集方法,包括:
S100当检测到panic后触发热启动;
S200当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
S310若启动时检测到所述热启动标志位,则kernel生成运行日志并存储在内存中;
S320当硬盘分区挂载完成,将所述内存中的所述运行日志保存至硬盘,然后触发冷启动;
S400若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在所述内存中;
S500当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
具体的,本实施例中,智能设备panic后自动触发warm reset,即在不关闭电源的情况,由软件控制重启计算机,此时刷新缓存,保持内存(RAM)上电,而kernel也是将获取的运行数据保存在内存中,保持RAM上电从而保证热启动时能够获取到完整有效的运行日志。当uboot检测到时warm reset时,在命令行解析库中增加热启动标志位,以表明当前重启为热重启。
当启动时检测到命令行解析库中存在相应的热启动标志位,表示智能设备上一次运行是crash,出现异常,因此需要抓取pstore。kernel生成运行日志,并将运行日志存储在内存(RAM)中,例如,kernel生成/sys/fs/pstore/console-ramoops,并不限定必须生成在sys目录下,操作人员可以自主设置在任意目录下,只是基于pstore机制,需要保存在内存那种。
之后智能设备重启中硬盘分区挂载完成之后,将内存中的运行日志保存至硬盘(ROM,Read-Only Memory,只读内存,断电后可以保存数据)中,避免后续冷启动过程中由于断电导致获取的运行日志丢失或出错,然后触发冷启动。其中,此处挂载的硬盘分区主要目的是作为运行日志的中转区,一方面便于后续冷启动之后读取,另一方面避免后续冷启动过程中数据丢失,因此挂载的分区为硬盘分区,例如等待data分区(更加便于用户读写)挂载完成,将pstore日志保存到/data/ramdump/console-ramoops,同样地,并不限定硬盘分区必须为data分区,操作人员可以自主设置在任意目录下,只是为了避免冷启动时数据,需要限定为硬盘。
当将运行日志转存至硬盘后,智能设备主动触发hard reset(冷启动),智能设备冷启动时将之前热启动时存储在硬盘(ROM)中的运行日志转存到内存(RAM)中,例如,将/data/ramdump/console-ramoops转换成/sys/fs/pstore/console-ramoops,以便智能设备运行处理。
当进程文件(例如bugreport)检测到内存中的运行日志,则抓取pstore上传到服务器。bugreport或者bugreport.exe是一个进程文件,这个文件的作用是对程序出错进行返回报告,一旦其所属软件的程序运行错误,其主程序便会调用该进程,将发生的错误以E-mail形式发送回官方服务器。
本申请利用死机时先warm reset抓取到pstore,继而再次触发hard reset来开机,且借用data分区中转一下抓取到的运行日志,一方面便于后续冷启动之后读取,另一方面避免后续冷启动过程中数据丢失。
本发明的另一实施例,参见图4所示,一种智能设备死机日志采集方法,包括:
S100当检测到panic后触发热启动;
S200当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
S300若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
S400若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在所述内存中;
S450若冷启动时检测到所述硬盘中存在所述运行日志,且所述运行日志的文件长度不为零,则将所述硬盘中的所述运行日志转存在所述内存中;
S460删除所述硬盘中的所述运行日志;
S500当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
具体的,本实施例中,智能设备panic后自动触发warm reset,即在不关闭电源的情况,由软件控制重启计算机,此时刷新缓存,保持内存(RAM)上电,而kernel也是将获取的运行数据保存在内存中,保持RAM上电从而保证热启动时能够获取到完整有效的运行日志。当uboot检测到时warm reset时,在命令行解析库中增加热启动标志位,以表明当前重启为热重启。
当启动时检测到命令行解析库中存在相应的热启动标志位,表示智能设备上一次运行是crash,出现异常,因此需要抓取pstore。kernel生成运行日志,并将运行日志存储转存至硬盘后,智能设备主动触发hard reset(冷启动),如果智能设备冷启动时检测到硬盘中存在运行日志,且运行日志的文件长度不为零,表示抓到了有效的运行日志,则将硬盘中的运行日志转存在内存中,同时将存储在硬盘中的运行日志删除。
当进程文件(例如bugreport)检测到内存中的运行日志,则抓取pstore上传到服务器。bugreport或者bugreport.exe是一个进程文件,这个文件的作用是对程序出错进行返回报告,一旦其所属软件的程序运行错误,其主程序便会调用该进程,将发生的错误以E-mail形式发送回官方服务器。
本申请冷启动之后将存储在硬盘中的运行日志转换至内存中,便于智能设备及时上报处理,同时删除将存储在硬盘中的运行日志删除。避免此次异常遗留过多的数据对设备运行造成影响。
本发明的另一实施例,,一种智能设备死机日志采集方法,基于使用Android智能设备,采用pstore功能来抓取panic时死机日志,包括:
a)panic需要保留warm reset(panic触发重启时,会刷新cache,保持ram上电,抓到的pstore会准确无乱码);
b)智能设备而panic后触发warm reset;
c)uboot检测到时warm reset时,增加cmdline“warm_reset=1”;
d)智能设备启动时检测到cmdline“warm_reset=1”,表示上一次是智能设备crash,需要抓取pstore;
e)kernel生成/sys/fs/pstore/console-ramoops(包含上次日志和调用栈);
f)等待data分区挂载完成;
g)将pstore日志(运行日志)保存到/data/ramdump/console-ramoops;
h)智能设备主动触发hard reset;
i)智能设备hard reset启动时会去检测/data/ramdump/console-ramoops是否存在,如果存在且文件长度不为0表示抓到了有效的pstore日志;
j)将/data/ramdump/console-ramoops转换成/sys/fs/pstore/console-ramoops;
k)删除/data/ramdump/console-ramoops
l)bugreport会检测到/sys/fs/pstore/console-ramoops有生成,于是抓取pstore上传到服务器。
整个方法基于原生linux的pstore功能,巧妙利用死机时先warm reset抓取到pstore,继而再次触发hard reset来开机,且借用data分区中转一下抓取到的crash日志。
本发明的一实施例,参见图5所示,一种智能设备死机日志采集系统100,包括:
热启动触发模块110,用于当检测到panic后触发热启动;
标志位处理模块120,与所述热启动触发模块110通信连接,用于当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
冷启动触发模块130,与所述标志位处理模块120通信连接,用于若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
日志转换模块140,与所述冷启动触发模块130通信连接,用于若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在所述内存中;
日志上传模块150,与所述日志转换模块140通信连接,用于当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
还包括:
所述热启动触发模块110,用于当检测到panic后,刷新缓存,保持所述内存上电,触发热启动。
所述冷启动触发模块130包括:
日志生成单元131,用于若启动时检测到所述热启动标志位,则kernel生成运行日志并存储在内存中;
冷启动触发单元132,与所述日志生成单元131通信连接,用于当硬盘分区挂载完成,将所述内存中的所述运行日志保存至硬盘,然后触发冷启动。
所述日志转换模块140包括:
日志转换单元141,用于若冷启动时检测到所述硬盘中存在所述运行日志,且所述运行日志的文件长度不为零,则将所述硬盘中的所述运行日志转存在所述内存中;
日志处理单元142,与所述日志转换单元141通信连接,用于删除所述硬盘中的所述运行日志。
具体地,冷启动(在直接关闭电源时),可能对硬件(如磁盘)有较大的影响,可能导致其损坏;另外,磁盘的写入一般存在cache(缓存),直接关闭电源可能导致cache没有flush,可能导致磁盘中数据出现错误。而pstore机制一般也是将运行日志存储在内存(RAM,random access memory,即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序)中,当冷启动关闭电源时,运行日志会丢失。
本实施例主要是基于使用Android设备,采用pstore功能来抓取panic时死机日志,panic需要保留warm reset(热启动)。panic是英文中是惊慌的意思,Linux Kernelpanic正如其名,linux kernel不知道如何走了,它会尽可能把它此时能获取的全部信息都打印出来。
智能设备panic后自动触发warm reset,即在不关闭电源的情况,由软件控制重启计算机,此时刷新缓存,保持内存(RAM)上电,而kernel也是将获取的运行数据保存在内存中,保持RAM上电从而保证热启动时能够获取到完整有效的运行日志。当uboot检测到时warm reset时,在命令行解析库中增加热启动标志位,以表明当前重启为热重启。
当启动时检测到命令行解析库中存在相应的热启动标志位,表示智能设备上一次运行是crash,出现异常,因此需要抓取pstore。kernel生成运行日志,并将运行日志存储在内存(RAM)中,例如,kernel生成/sys/fs/pstore/console-ramoops,并不限定必须生成在sys目录下,操作人员可以自主设置在任意目录下,只是基于pstore机制,需要保存在内存那种。
之后智能设备重启中硬盘分区挂载完成之后,将内存中的运行日志保存至硬盘(ROM,Read-Only Memory,只读内存,断电后可以保存数据)中,避免后续冷启动过程中由于断电导致获取的运行日志丢失或出错,然后触发冷启动。其中,此处挂载的硬盘分区主要目的是作为运行日志的中转区,一方面便于后续冷启动之后读取,另一方面避免后续冷启动过程中数据丢失,因此挂载的分区为硬盘分区,例如等待data分区(更加便于用户读写)挂载完成,将pstore日志保存到/data/ramdump/console-ramoops,同样地,并不限定硬盘分区必须为data分区,操作人员可以自主设置在任意目录下,只是为了避免冷启动时数据,需要限定为硬盘。其中,运行日志包含智能设备上次发生异常时的操作系统日志和相互之间的调用栈,以便后续获取之后能够分析智能设备的运行逻辑,进而得出其出错原因。
当将运行日志转存至硬盘后,智能设备主动触发hard reset(冷启动),如果智能设备冷启动时检测到硬盘中存在运行日志,且运行日志的文件长度不为零,表示抓到了有效的运行日志,则将硬盘中的运行日志转存在内存中,同时将存储在硬盘中的运行日志删除。
当进程文件(例如bugreport)检测到内存中的运行日志,则抓取pstore上传到服务器。bugreport或者bugreport.exe是一个进程文件,这个文件的作用是对程序出错进行返回报告,一旦其所属软件的程序运行错误,其主程序便会调用该进程,将发生的错误以E-mail形式发送回官方服务器。
本申请中当检测到panic后,刷新缓存,保持内存上电,RAM上电从而保证热启动时能够获取到完整有效的运行日志。利用死机时先热启动抓取到pstore,并转存至硬盘中,避免数据丢失,继而再次触发冷启动来开机,以获取有效的运行日志。
基于同一发明构思,本申请实施例还提供了电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器,用于执行所述存储器上所存放的计算机程序,实现如上述方法实施例所述的ubifs格式镜像的软件挂载方法。
基于同一发明构思,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的所有方法步骤或部分方法步骤。
本发明实现上述方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
基于同一发明构思,本申请实施例还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法中的所有方法步骤或部分方法步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如声音播放功能、图像播放功能等);存储数据区可存储根据手机的使用所创建的数据(例如音频数据、视频数据等)。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、服务器和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种智能设备死机日志采集方法,其特征在于,包括以下步骤:
当检测到panic后触发热启动;
当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在内存中;
当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
2.根据权利要求1所述的智能设备死机日志采集方法,其特征在于,当检测到panic后触发热启动包括步骤:
当检测到panic后,刷新缓存,保持所述内存上电,触发热启动。
3.根据权利要求1或2所述的智能设备死机日志采集方法,其特征在于,若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动包括步骤:
若启动时检测到所述热启动标志位,则kernel生成运行日志并存储在内存中;
当硬盘分区挂载完成,将所述内存中的所述运行日志保存至硬盘,然后触发冷启动。
4.根据权利要求1所述的智能设备死机日志采集方法,其特征在于,若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在所述内存中之后包括步骤:
若冷启动时检测到所述硬盘中存在所述运行日志,且所述运行日志的文件长度不为零,则将所述硬盘中的所述运行日志转存在所述内存中;
删除所述硬盘中的所述运行日志。
5.一种智能设备死机日志采集系统,其特征在于,包括:
热启动触发模块,用于当检测到panic后触发热启动;
标志位处理模块,与所述热启动触发模块通信连接,用于当uboot检测到热启动被触发时,在命令行解析库中增加热启动标志位;
冷启动触发模块,与所述标志位处理模块通信连接,用于若启动时检测到所述热启动标志位,则kernel生成运行日志,并将所述运行日志转存至硬盘中,然后触发冷启动;
日志转换模块,与所述冷启动触发模块通信连接,用于若冷启动时检测到所述硬盘中的所述运行日志,则将所述硬盘中的所述运行日志转存在内存中;
日志上传模块,与所述日志转换模块通信连接,用于当进程文件检测到所述内存中的所述运行日志,则抓取pstore上传到服务器。
6.根据权利要求5所述的智能设备死机日志采集系统,其特征在于,所述热启动触发模块,用于当检测到panic后,刷新缓存,保持所述内存上电,触发热启动。
7.根据权利要求5所述的智能设备死机日志采集系统,其特征在于,所述冷启动触发模块包括:
日志生成单元,用于若启动时检测到所述热启动标志位,则kernel生成运行日志并存储在内存中;
冷启动触发单元,与所述日志生成单元通信连接,用于当硬盘分区挂载完成,将所述内存中的所述运行日志保存至硬盘,然后触发冷启动。
8.根据权利要求5所述的智能设备死机日志采集系统,其特征在于,所述日志转换模块包括:
日志转换单元,用于若冷启动时检测到所述硬盘中存在所述运行日志,且所述运行日志的文件长度不为零,则将所述硬盘中的所述运行日志转存在所述内存中;
日志处理单元,与所述日志转换单元通信连接,用于删除所述硬盘中的所述运行日志。
9.一种电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器,用于执行所述存储器上所存放的计算机程序,实现如权利要求1至权利要求4任一项所述的智能设备死机日志的采集方法。
10.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求4任一项所述的智能设备死机日志的采集方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420573.1A CN112540874A (zh) | 2020-12-08 | 2020-12-08 | 智能设备死机日志采集方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420573.1A CN112540874A (zh) | 2020-12-08 | 2020-12-08 | 智能设备死机日志采集方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112540874A true CN112540874A (zh) | 2021-03-23 |
Family
ID=75018242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011420573.1A Pending CN112540874A (zh) | 2020-12-08 | 2020-12-08 | 智能设备死机日志采集方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540874A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900855A (zh) * | 2021-09-29 | 2022-01-07 | 苏州浪潮智能科技有限公司 | 一种交换机异常状态的主动热启动方法、系统及装置 |
CN114153509A (zh) * | 2021-12-01 | 2022-03-08 | 联想(北京)有限公司 | 一种系统启动方法及电子设备 |
CN114817908A (zh) * | 2022-04-18 | 2022-07-29 | 北京凝思软件股份有限公司 | 一种双机热备软件的自我隔离方法、系统、终端及介质 |
-
2020
- 2020-12-08 CN CN202011420573.1A patent/CN112540874A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900855A (zh) * | 2021-09-29 | 2022-01-07 | 苏州浪潮智能科技有限公司 | 一种交换机异常状态的主动热启动方法、系统及装置 |
CN113900855B (zh) * | 2021-09-29 | 2023-12-22 | 苏州浪潮智能科技有限公司 | 一种交换机异常状态的主动热启动方法、系统及装置 |
CN114153509A (zh) * | 2021-12-01 | 2022-03-08 | 联想(北京)有限公司 | 一种系统启动方法及电子设备 |
CN114817908A (zh) * | 2022-04-18 | 2022-07-29 | 北京凝思软件股份有限公司 | 一种双机热备软件的自我隔离方法、系统、终端及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112540874A (zh) | 智能设备死机日志采集方法、系统、电子设备及存储介质 | |
US11397648B2 (en) | Virtual machine recovery method and virtual machine management device | |
US20120110378A1 (en) | Firmware recovery system and method of baseboard management controller of computing device | |
CN102929747A (zh) | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 | |
CN104636217A (zh) | 一种根文件系统自动备份和异常恢复方法和分区结构 | |
CN110413432B (zh) | 一种信息处理方法、电子设备及存储介质 | |
CN102081573A (zh) | 用于记录设备重启原因的装置及方法 | |
US20220027254A1 (en) | Storage-based log file management | |
CN104714863A (zh) | 一种基于Linux操作系统的系统宕机后Raid卡日志完整保存的方法 | |
CN108431781A (zh) | 设备驱动器检测的错误的自诊断和自动诊断数据收集 | |
US11023335B2 (en) | Computer and control method thereof for diagnosing abnormality | |
CN111522598A (zh) | 嵌入式设备的重启信息记录方法及装置 | |
CN116701285A (zh) | 远程访问控制装置、方法、设备及计算机可读介质 | |
CN114756355B (zh) | 一种计算机操作系统的进程自动快速恢复的方法和装置 | |
CN115951949A (zh) | 一种bios的配置参数的恢复方法、装置及计算设备 | |
CN114020308A (zh) | 一种摄像设备升级方法、装置、设备及介质 | |
CN101000570A (zh) | 计算机平台开机配置存储器备援处理方法及系统 | |
CN100435118C (zh) | 高速缓存数据回存方法 | |
CN103294573A (zh) | 一种智能终端及其数据备份方法 | |
CN108920628B (zh) | 一种适配大数据平台的分布式文件系统访问方法及装置 | |
CN115237669A (zh) | 一种数据备份方法、数据恢复方法、装置及电子设备 | |
CN113507567B (zh) | 快速启动图像采集的方法、摄像机及存储介质 | |
CN106648807B (zh) | 一种基于flash存储器的dsp软件上传更新方法 | |
CN115840682B (zh) | 基于sw64指令集的bios层级采样的运维监控方法及装置 | |
CN103034456B (zh) | 基于非易失sram存储的虚拟终端的实现方法 |
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 |