一种命令行cli故障重启方法及装置的制造方法

文档序号:9921936阅读:502来源:国知局
一种命令行cli故障重启方法及装置的制造方法
【技术领域】
[0001]本发明涉及通信异常处理技术领域,特别是涉及一种命令行CLI故障重启方法及
目.ο
【背景技术】
[0002]命令行界面(Command Line Interface,简称CLI),是可在用户提示符下键入可执行指令的界面,通过用户下发CLI指令,可以对设备进行相应控制。CLI界面是所有路由器、TM(Terminat1n Multiplexer,终端复用器)、CM(Cable Modem,电缆调制解调器)等产品提供的界面,如思科CISCO,朗讯科技LUCENT,Arris,华为等厂商生产的产品都能提供该界面,已经成为路由器等产品的标准。使用CLI具有使用要求低(只需要串行口)、容易使用、功能扩充方便等优点,特别是当有数量较多的路由器等设备需要配置的时候,可以通过复制COPY/粘贴PASTE功能很快完成所有路由器的配置,不需要通过IE—台台配置。
[0003]在设备运行过程中,难免会出现CLI发生故障的情况。当CLI出现故障时,设备可能会按照上一次用户下发的CLI指令继续正常运行,但此时操作CLI,设备不再响应用户下发的新的CLI指令,即不会根据用户此时下发的新的CLI指令,对设备进行相应控制。针对这种问题,现有的处理方法是将整个设备进行重启,从而实现CLI的重启,使CLI恢复正常。
[0004]现有的处理方式需通过重启整个设备来实现CLI的重启,影响设备其他进程的正常运行,可靠性低。

【发明内容】

[0005]本发明提供一种命令行CLI故障重启方法及装置,以解决现有技术中在CLI出现故障时,需重启整个设备来实现CLI的重启,影响设备其他进程的正常运行,可靠性低的问题。
[0006]为此目的,本发明提出了以下技术方案。
[0007 ] —方面,本发明提供一种命令行CL I故障重启方法,包括:
[0008]捕获CLI故障信号;
[0009]根据所述捕获的CLI故障信号,向CLI监控执行模块发送故障处理信号;
[0010]CLI监控执行模块接收所述故障处理信号,并执行CLI重启命令,控制CLI重启。
[0011]具体地,所述捕获CLI故障信号通过在查询或设置信号处理函数sigact1n上加载CLI故障信号的异常处理函数来实现。
[0012]具体地,所述CLI故障信号是在CLI出现故障时内核发送的段错误信号SIGSEGV。
[0013]优选地,上述方法还包括:
[0014]CLI监控执行模块定时获取CLI的进程个数,当CLI的进程个数为零时,执行CLI重启命令,控制CLI重启。
[0015]优选地,上述方法还包括:
[0016]在CLI主程序启动后,将用户下发的未保存的配置信息存储至临时配置记录文件中,形成第二配置信息;
[0017]当CLI重启时,加载正常配置文件的第一配置信息,以及加载临时配置记录文件中的第二配置信息。
[0018]具体地,所述将用户下发的未保存的配置信息存储至临时配置记录文件中包括:
[0019]获取用户下发的未保存的配置信息;
[0020]对所述未保存的配置信息进行过滤,得到关键配置信息;
[0021 ]将所述关键配置信息写入临时配置记录文件中,形成第二配置信息。
[0022]另一方面,本发明还提供一种命令行CLI故障重启装置,包括:
[0023]故障信号捕获模块,用于捕获CLI故障信号;
[0024]故障处理模块,用于根据所述捕获的CLI故障信号,向CLI监控执行模块发送故障处理信号;
[0025]CLI监控执行模块,包括执行子模块,用于接收所述故障处理信号,并执行CLI重启命令,控制CLI重启。
[0026]所述故障信号捕获模块具体用于:捕获在CLI出现故障时内核发送的段错误信号SIGSEGV。
[0027]优选地,所述CLI监控执行模块还包括:
[0028]时钟子模块,用于设定访问CLI进程,获取CLI的进程个数的时间间隔;
[0029]CLI进程个数获取子模块,用于根据所述时间间隔,定时获取CLI的进程个数;
[0030]所述执行子模块还用于:当获取的CLI的进程个数为零时,执行CLI重启命令,控制CLI重启。
[0031]优选地,上述装置还包括:
[0032]配置信息自动保存模块,用于在CLI主程序启动后,将用户下发的未保存的配置信息存储至临时配置记录文件中,形成第二配置信息;
[0033]加载模块,用于当CLI重启时,加载正常配置文件的第一配置信息,以及加载临时配置记录文件中的第二配置信息;
[0034]所述配置信息自动保存模块具体包括:
[0035]配置信息获取子模块,用于获取用户下发的未保存的配置信息;
[0036]配置信息过滤子模块,用于对所述未保存的配置信息进行过滤,得到关键配置信息;
[0037]配置信息写入子模块,用于将所述关键配置信息写入临时配置记录文件中,形成第二配置信息。
[0038]本发明的有益效果为:
[0039]本发明提供的命令行CLI故障重启方法及装置,通过自动捕获CLI故障信号,并向CLI监控执行模块发送故障处理信号,通过CLI监控执行模块执行CLI重启命令,控制CLI重启,使得在CLI出现故障时能单独重启CLI,而无需通过将整个设备重启来实现CLI的重启,CLI的故障问题不会影响到设备其他进程的正常运行,增强了设备的可用性,提高了设备运行的可靠性。
【附图说明】
[0040]通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
[0041 ]图1示出了本发明实施例命令行CLI故障重启方法的流程图;
[0042]图2示出了本发明实施例中CLI出现故障但未触发异常处理函数时的处理流程图;
[0043]图3示出了本发明实施例中保存和加载用户未保存的配置信息的流程图。
【具体实施方式】
[0044]下面将结合附图对本发明的实施例进行详细描述。
[0045]图1为本发明实施例提供的命令行CLI故障重启方法的流程图,如图1所示,该方法包括:
[0046]SlOl,捕获CLI故障信号;
[0047]S102,根据捕获的CLI故障信号,向CLI监控执行模块发送故障处理信号;
[0048]S103,CLI监控执行模块接收故障处理信号,并执行CLI重启命令,控制CLI重启。
[0049]本发明实施例通过自动捕获CLI故障信号,并向CLI监控执行模块发送故障处理信号,通过CLI监控执行模块执行CLI重启命令,控制CLI重启,使得在CLI出现故障时能单独重启CLI,而无需重启整个设备,保证了设备其他进程的正常运行,增强了设备的可用性,提高了设备运行的可靠性。
[0050]CLI出现故障后,为了实现单独重启功能,需要CLI自身能够捕获到异常,并自己重启。由于当CLI出现故障时,内核往往会发出段错误信号SIGSEGV,用于表示CLI出现故障,因此,作为一种实施方式,本发明实施例通过CLI自身捕获在CLI出现故障时内核发送的SIGSEGV信号,再通过设定该SIGSEGV信号的处理方式,来实现CLI单独重启功能。
[0051]signal函数,能用于实现设定信号的处理,包括两个形参,分别代表需要处理的信号和处理信号函数的指针,其中,处理信号的函数为自定义函数,当在signal函数上加载上述SIGSEGV信号的异常处理函数后,只要signal函数捕获到SIGSEGV信号,就会跳转到自定义异常处理函数处执行相应操作,但由于signal函数在执行完一次操作后,对SIGSEGV信号的处理会回到默认处理方式,且容易丢失信号。由于sigact1n函数能够处理重复的信号,且不易丢失信号,因此,作为本发明实施例的优选方式,通过在sigact1n函数上加载CLI故障信号的异常处理函数来实现,即在sigact1n函数上加载SIGSEGV信号的异常处理函数来实现。
[0052]当sigact1n函数捕获到内核发出的SIGSEGV信号时,会触发加载的异常处理函数,跳转到自定义异常处理函数处执行相应操作,即向CLI监控执行模块发送故障处理信号SIGUSR1,该SIGUSR1信号为用户定义的信号。而后,CLI主程序陷入死循环。
[0053]当CLI监控执行模块接收到SI⑶SRl信号时,说明CLI已经出现故障,此时,CLI监控执行模块会执行killall-9CLI命令,即强制结束指定程序CLI,然后执行CLI重启命令CLIreboot,控制CLI重新启动。
[0054]需要说明的是,当CLI出现故障时,还存在没有触发CLI的异常处理函数,而是CLI程序直接自动退出的情况,此时,CLI监控执行模块接收不到CLI发送的SI⑶SRl信号。为了在此情况下也能监控到CLI异常情况,及时的做出相应处理,优选地,本发明实施例提供的命令行CLI故障重启方法还包括如图2所示的如下步骤:
[0055]S201: CLI监控执行模块定时获取CLI的进程个数;
[0056]S202,当CLI的进程个数为零时,执行CLI重启命令,控制CLI重启。
[0057]上述步骤S201中获取CLI的进程个数通过执行命令“ps aux | grep ‘CLI ’ | grep-v‘grep’ I wc-1”来实现,其中,“ps”是显示当前状态处于运行状态的进程,“ps aux”是显示所有进程和其状态,“ps aux I grep‘CLI’”表示查到CLI的进
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1