CN107480005A - 一种Linux系统进程守护方法 - Google Patents

一种Linux系统进程守护方法 Download PDF

Info

Publication number
CN107480005A
CN107480005A CN201710640753.2A CN201710640753A CN107480005A CN 107480005 A CN107480005 A CN 107480005A CN 201710640753 A CN201710640753 A CN 201710640753A CN 107480005 A CN107480005 A CN 107480005A
Authority
CN
China
Prior art keywords
module
subprocess
guard
guards
linux system
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
Application number
CN201710640753.2A
Other languages
English (en)
Inventor
丘英方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huizhou Foryou General Electronics Co Ltd
Original Assignee
Huizhou Foryou General Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huizhou Foryou General Electronics Co Ltd filed Critical Huizhou Foryou General Electronics Co Ltd
Priority to CN201710640753.2A priority Critical patent/CN107480005A/zh
Publication of CN107480005A publication Critical patent/CN107480005A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking

Abstract

本发明提供Linux系统进程守护方法,方法包括:S1、进程守护模块启动;S2、所述进程守护模块创建各应用子进程;S3、所述进程守护模块监控所述各应用子进程;S4、所述进程守护模块判断所述应用子进程的运行状态是否为僵尸进程,是则进入S5,否则进入S6;S5、所述进程守护模块调用进程回收函数回收所述僵尸进程,并重启新进程以恢复所述应用子进程;S6、所述进程守护模块以第二预设周期向所述应用子进程发送心跳请求广播;S7、所述进程守护模块判断在连续预设次数内是否接收到所述应用子进程的回应,是则返回S3,否则结束并重启所述应用子进程。本发明实现了进程的安全守护。

Description

一种Linux系统进程守护方法
技术领域
本发明涉及Linux软件技术领域,尤其涉及一种Linux系统进程守护方法。
背景技术
进程是运行中的程序,包括代码、数据和分配给进程的资源。一个运行着的程序可能有多个进程,比如,WWW服务器是apache服务器,当管理员启动服务后,可能会有多个用户来访问,也就是说多个用户同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。
进程有可执行状态(R)、可中断的睡眠状态(S)、不可中断的睡眠状态(D)、暂停状态或跟踪状态(T)、僵尸状态(Z)、退出状态(X)几种状态。
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。在fork()函数执行完毕后,则出现两个进程,一个是子进程,一个是父进程。当父进程创建子进程之后,对子进程进行状态监控。当子进程出现异常时,进行资源回收并创建新的健康进程替代。系统运行整个过程需要保证子进程的正常运行。
多进程并发运行是Linux系统的一大特点,每个功能模块都是以进程的方式运行,当运行过程某个模块因为异常导致退出时,系统其它进程仍然可以正常工作,并不会因为此而重启系统,给用户带了良好的体验。
目前Linux系统的进程守护做法是父进程时刻监控子进程的运行状态,当某一时刻子进程异常变成僵尸进程后,父进程调用wait()函数或者waitpid()函数进行回收,然后调用fork()函数创建一个新进程替换。这种方法存在如下问题:
1、当异常进程被重启的时候,程序需要进行再次初始化,模块运行的数据可能会被刷新,造成跟重启前的状态不一致。
2、当进程内部有异常,但是没有挂死,父进程是无法识别的,这时候并不能使异常的进程恢复。
3、系统异常挂死被重启,基本上没有痕迹,不便于分析进程挂死的原因,解决问题的效率低下。
发明内容
本发明提供一种Linux系统进程守护方法,旨在解决现有技术中的缺陷,实现进程的安全守护。
为达到上述目的,本发明所采取的技术方案为:
本发明提供一种Linux系统进程守护方法,包括:
S1、进程守护模块启动;
S2、所述进程守护模块创建各应用子进程;
S3、所述进程守护模块监控所述各应用子进程;
S4、所述进程守护模块判断所述应用子进程的运行状态是否为僵尸进程,是则进入S5,否则进入S6;
S5、所述进程守护模块调用进程回收函数回收所述僵尸进程,并重启新进程以恢复所述应用子进程;
S6、所述进程守护模块以第二预设周期向所述应用子进程发送心跳请求广播;
S7、所述进程守护模块判断在连续预设次数内是否接收到所述应用子进程的回应,是则返回S3,否则结束并重启所述应用子进程。
进一步,在所述S3之后还包括:
S31a、所述进程守护模块监控服务进程;
S32、所述服务进程以第三预设周期发送服务进程异常信息给进程所述守护模块;
S33、所述进程守护模块存储所述服务进程异常信息。
具体地,所述S33包括:所述进程守护模块通过存储管理进程将所述服务进程异常信息写入文件系统进行存储。
进一步地,在所述S33之后还包括:
S34、所述应用进程及服务进程在正常运行时以第四预设周期记忆进程恢复参数。
进一步地,在所述S3之后还包括:
S31b、所述进程守护模块监控诊断进程,所述诊断进程收集各应用进程的错误诊断码,存储在文件系统中。
进一步地,在所述S7之后还包括:
S8、所述进程守护模块在重启新进程时给新进程传入所述进程恢复参数。
进一步地,在所述S8之后还包括:
S9、所述进程守护模块以第五预设周期调用看门狗模块进行喂狗,若所述看门狗模块在预设计数溢出时间内没收到喂狗调用,则重启系统,或者:
所述进程守护模块包括第一进程守护模块、第二进程守护模块,当所述第二进程守护模块检测到第一进程守护模块异常后,替代所述第一进程守护模块进行进程监控,并重启所述第一进程守护模块。
本发明的有益效果在于:本发明通过进程守护模块创建并监控所有子进程,当子进程出现僵尸进程或异常状态可及时进行重启,并通过保存应用进程及服务进程的恢复参数,当进程重启后传入进程恢复参数,恢复上一次运行的状态。
附图说明
图1是本发明的Linux系统进程守护方法的系统示意图;
图2是本发明的Linux系统进程守护方法的流程示意图。
具体实施方式
下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。
如图1所示,是本发明的系统示意图,涉及系统四大部分:应用层、中间件层、内核层和文件系统。实现本发明所述进程守护方法的进程守护模块位于中间件层。
实施例1
如图2所示,是本发明的Linux系统进程守护方法的流程示意图,包括如下步骤:
步骤1、进程守护模块启动。
步骤2、所述进程守护模块创建各应用子进程。
与现有技术不同的是,在本实施例中,所述进程守护模块为所有应用进程的父进程,可以获取各子进程的状态,对各子进程进行正常运行守护,回收并重启异常的子进程。
各应用子进程与进程守护模块通过进程间通信的方式(如Dbus)进行信息交互。
步骤3、所述进程守护模块监控所述各应用子进程。
在本实施例中,所述进程守护模块以第一预设周期查询所述各应用子进程的运行状态进行监控。
在本实施例中,所述第一预设周期为5秒。
步骤4、所述进程守护模块判断所述应用子进程的运行状态是否为僵尸进程,是则进入步骤5,否则进入步骤6。
当进程守护模块创建一个子进程后,如果所述子进程退出,但该子进程的进程描述符仍然保存在系统中,则该进程称之为僵尸进程。由于僵尸进程会占用进程号,但系统所能使用的进程号是有限的,因此可能会导致没有可用的进程号而导致进程守护模块不能产生新的进程。
步骤5、所述进程守护模块调用进程回收函数回收所述僵尸进程,并重启新进程以恢复所述应用子进程。
所述进程回收函数为wait()函数或waitpid()函数。
步骤6、所述进程守护模块以第二预设周期向所述应用子进程发送心跳请求广播。
在本实施例中,所述第二预设周期为2秒。
步骤7、所述进程守护模块判断在连续预设次数内是否接收到所述应用子进程的回应,是则返回步骤3,否则结束并重启所述应用子进程。
在本实施例中,所述预设次数为5次。
实施例2
与实施例1不同的是,在步骤3之后还包括:
步骤31a、所述进程守护模块监控服务进程。
所述服务进程与进程守护模块通过进程间通信的方式(如Dbus)进行信息交互。
步骤32、所述服务进程以第三预设周期发送服务进程异常信息给进程所述守护模块。
在本实施例中,所述第三预设周期为5秒。
步骤33、所述进程守护模块存储所述服务进程异常信息。
在本实施例中,所述步骤33包括:所述进程守护模块通过存储管理进程将所述服务进程异常信息写入文件系统进行存储。
在具体实施中,存储管理进程提供数据读写的接口,通过创建数据库和文件的方式保存数据。
实施例3
与实施例2不同的是,在步骤33之后还包括:
步骤34、所述应用进程及服务进程在正常运行时以第四预设周期记忆进程恢复参数。
在本实施例中,所述第四预设周期为5秒。
实施例4
与实施例1不同的是,在步骤3之后还包括:
步骤31b、所述进程守护模块监控诊断进程,所述诊断进程收集各应用进程的错误诊断码,存储在文件系统中。
所述所述进程守护模块通过监控所述诊断进程,可以在需要时提取所述错误诊断码进行显示,以便查找应用进程产生异常的原因。
实施例5
与实施例1不同的是,在步骤7之后还包括:
步骤8、所述进程守护模块在重启新进程时给新进程传入所述进程恢复参数。
与现有技术中调用fork()函数创建新进程时传入相同参数不同的是,所述进程守护模块重启新进程时给新进程传入不同的启动参数,表明本次进程启动的方式是进程异常后重启的。所述新进程根据启动参数去运行不同的初始化分支,以便恢复上一次运行的状态。
实施例6
与实施例5不同的是,在步骤8之后还包括:
步骤9、所述进程守护模块以第五预设周期调用看门狗模块进行喂狗,若所述看门狗模块在预设计数溢出时间内没收到喂狗调用,则重启系统。
在本实施例中,所述第五预设周期为2秒,所述预设计数溢出时间为10秒。
实施例7
与实施例6不同的是,所述步骤9为:
步骤9、所述进程守护模块包括第一进程守护模块、第二进程守护模块,当所述第二进程守护模块检测到第一进程守护模块异常后,替代所述第一进程守护模块进行进程监控,并重启所述第一进程守护模块。
以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。

Claims (7)

1.一种Linux系统进程守护方法,其特征在于,包括:
S1、进程守护模块启动;
S2、所述进程守护模块创建各应用子进程;
S3、所述进程守护模块监控所述各应用子进程;
S4、所述进程守护模块判断所述应用子进程的运行状态是否为僵尸进程,是则进入S5,否则进入S6;
S5、所述进程守护模块调用进程回收函数回收所述僵尸进程,并重启新进程以恢复所述应用子进程;
S6、所述进程守护模块以第二预设周期向所述应用子进程发送心跳请求广播;
S7、所述进程守护模块判断在连续预设次数内是否接收到所述应用子进程的回应,是则返回S3,否则结束并重启所述应用子进程。
2.根据权利要求1所述的Linux系统进程守护方法,其特征在于,在所述S3之后还包括:
S31a、所述进程守护模块监控服务进程;
S32、所述服务进程以第三预设周期发送服务进程异常信息给进程所述守护模块;
S33、所述进程守护模块存储所述服务进程异常信息。
3.根据权利要求2所述的Linux系统进程守护方法,其特征在于,所述S33包括:
所述进程守护模块通过存储管理进程将所述服务进程异常信息写入文件系统进行存储。
4.根据权利要求2所述的Linux系统进程守护方法,其特征在于,在所述S33之后还包括:
S34、所述应用进程及服务进程在正常运行时以第四预设周期记忆进程恢复参数。
5.根据权利要求1所述的Linux系统进程守护方法,其特征在于,在所述S3之后还包括:
S31b、所述进程守护模块监控诊断进程,所述诊断进程收集各应用进程的错误诊断码,存储在文件系统中。
6.根据权利要求1所述的Linux系统进程守护方法,其特征在于,在所述S7之后还包括:
S8、所述进程守护模块在重启新进程时给新进程传入所述进程恢复参数。
7.根据权利要求6所述的Linux系统进程守护方法,其特征在于,在所述S8之后还包括:
S9、所述进程守护模块以第五预设周期调用看门狗模块进行喂狗,若所述看门狗模块在预设计数溢出时间内没收到喂狗调用,则重启系统,或者:
所述进程守护模块包括第一进程守护模块、第二进程守护模块,当所述第二进程守护模块检测到第一进程守护模块异常后,替代所述第一进程守护模块进行进程监控,并重启所述第一进程守护模块。
CN201710640753.2A 2017-07-31 2017-07-31 一种Linux系统进程守护方法 Pending CN107480005A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710640753.2A CN107480005A (zh) 2017-07-31 2017-07-31 一种Linux系统进程守护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710640753.2A CN107480005A (zh) 2017-07-31 2017-07-31 一种Linux系统进程守护方法

Publications (1)

Publication Number Publication Date
CN107480005A true CN107480005A (zh) 2017-12-15

Family

ID=60598538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710640753.2A Pending CN107480005A (zh) 2017-07-31 2017-07-31 一种Linux系统进程守护方法

Country Status (1)

Country Link
CN (1) CN107480005A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153586A (zh) * 2017-12-25 2018-06-12 北京百度网讯科技有限公司 程序管理方法、装置与系统、计算机设备及可读介质
CN108153620A (zh) * 2017-12-27 2018-06-12 深圳豪客互联网有限公司 一种进程控制方法及装置
CN109491836A (zh) * 2018-10-30 2019-03-19 京信通信系统(中国)有限公司 数据恢复方法、装置及基站
CN109871301A (zh) * 2019-02-12 2019-06-11 中电科仪器仪表有限公司 一种远程测试装置、系统及方法
CN109947576A (zh) * 2017-12-21 2019-06-28 上海盛霄云计算技术有限公司 一种虚拟机内部代理程序管理的方法
CN110401659A (zh) * 2019-07-25 2019-11-01 高新兴科技集团股份有限公司 一种业务系统的设备访问方法、设备访问装置和系统
CN111352803A (zh) * 2020-03-09 2020-06-30 广州市百果园信息技术有限公司 业务数据处理方法、装置、设备和存储介质
CN111400081A (zh) * 2020-03-24 2020-07-10 恒生电子股份有限公司 进程的守护方法、装置、电子设备和计算机存储介质
CN112346906A (zh) * 2019-08-08 2021-02-09 丰鸟航空科技有限公司 无人机守护进程处理方法、装置、设备、及存储介质
CN113407406A (zh) * 2021-05-26 2021-09-17 中国联合网络通信集团有限公司 异常监控方法和异常监控系统
CN113535446A (zh) * 2021-06-29 2021-10-22 中国人民解放军战略支援部队信息工程大学 用于线路接入时业务数据保护的进程双向守护方法及系统
CN113722086A (zh) * 2020-05-26 2021-11-30 南宁富桂精密工业有限公司 应用进程守护方法、服务器及计算机可读存储介质
CN114237766A (zh) * 2021-12-28 2022-03-25 南京合智电力科技有限公司 一种进程动态重启的方法
CN114996013A (zh) * 2022-06-09 2022-09-02 河南省肿瘤医院 一种基于嵌入式的微波治疗设备
CN116991559A (zh) * 2023-09-25 2023-11-03 苏州元脑智能科技有限公司 不可中断的睡眠状态进程的退出方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996257A (zh) * 2006-12-26 2007-07-11 华为技术有限公司 对进程进行监控的方法和系统
US7415699B2 (en) * 2003-06-27 2008-08-19 Hewlett-Packard Development Company, L.P. Method and apparatus for controlling execution of a child process generated by a modified parent process
CN103716182A (zh) * 2013-12-12 2014-04-09 中国科学院信息工程研究所 一种面向实时云平台的故障检测与容错方法及系统
CN106445781A (zh) * 2016-09-27 2017-02-22 北京航空航天大学 基于消息传递的hpc大规模并行程序异常自动监测及软硬件原因判断的检测系统
CN106959909A (zh) * 2017-03-27 2017-07-18 西安电子科技大学 一种Android系统上的应用软件异常恢复方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7415699B2 (en) * 2003-06-27 2008-08-19 Hewlett-Packard Development Company, L.P. Method and apparatus for controlling execution of a child process generated by a modified parent process
CN1996257A (zh) * 2006-12-26 2007-07-11 华为技术有限公司 对进程进行监控的方法和系统
CN103716182A (zh) * 2013-12-12 2014-04-09 中国科学院信息工程研究所 一种面向实时云平台的故障检测与容错方法及系统
CN106445781A (zh) * 2016-09-27 2017-02-22 北京航空航天大学 基于消息传递的hpc大规模并行程序异常自动监测及软硬件原因判断的检测系统
CN106959909A (zh) * 2017-03-27 2017-07-18 西安电子科技大学 一种Android系统上的应用软件异常恢复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ARUN_YH: "top对僵尸进程的处理", 《HTTPS://WWW.CNBLOGS.COM/ITCOMPUTER/P/4651116.HTML》 *

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947576B (zh) * 2017-12-21 2022-12-06 上海盛霄云计算技术有限公司 一种虚拟机内部代理程序管理的方法
CN109947576A (zh) * 2017-12-21 2019-06-28 上海盛霄云计算技术有限公司 一种虚拟机内部代理程序管理的方法
CN108153586A (zh) * 2017-12-25 2018-06-12 北京百度网讯科技有限公司 程序管理方法、装置与系统、计算机设备及可读介质
CN108153620A (zh) * 2017-12-27 2018-06-12 深圳豪客互联网有限公司 一种进程控制方法及装置
CN109491836B (zh) * 2018-10-30 2021-04-27 京信通信系统(中国)有限公司 数据恢复方法、装置及基站
CN109491836A (zh) * 2018-10-30 2019-03-19 京信通信系统(中国)有限公司 数据恢复方法、装置及基站
CN109871301A (zh) * 2019-02-12 2019-06-11 中电科仪器仪表有限公司 一种远程测试装置、系统及方法
CN110401659A (zh) * 2019-07-25 2019-11-01 高新兴科技集团股份有限公司 一种业务系统的设备访问方法、设备访问装置和系统
CN110401659B (zh) * 2019-07-25 2021-11-05 高新兴科技集团股份有限公司 一种业务系统的设备访问方法、设备访问装置和系统
CN112346906A (zh) * 2019-08-08 2021-02-09 丰鸟航空科技有限公司 无人机守护进程处理方法、装置、设备、及存储介质
CN111352803A (zh) * 2020-03-09 2020-06-30 广州市百果园信息技术有限公司 业务数据处理方法、装置、设备和存储介质
CN111400081A (zh) * 2020-03-24 2020-07-10 恒生电子股份有限公司 进程的守护方法、装置、电子设备和计算机存储介质
CN113722086A (zh) * 2020-05-26 2021-11-30 南宁富桂精密工业有限公司 应用进程守护方法、服务器及计算机可读存储介质
CN113407406A (zh) * 2021-05-26 2021-09-17 中国联合网络通信集团有限公司 异常监控方法和异常监控系统
CN113407406B (zh) * 2021-05-26 2023-06-23 中国联合网络通信集团有限公司 异常监控方法和异常监控系统
CN113535446A (zh) * 2021-06-29 2021-10-22 中国人民解放军战略支援部队信息工程大学 用于线路接入时业务数据保护的进程双向守护方法及系统
CN113535446B (zh) * 2021-06-29 2023-06-06 中国人民解放军战略支援部队信息工程大学 用于线路接入时业务数据保护的进程双向守护方法及系统
CN114237766A (zh) * 2021-12-28 2022-03-25 南京合智电力科技有限公司 一种进程动态重启的方法
CN114996013A (zh) * 2022-06-09 2022-09-02 河南省肿瘤医院 一种基于嵌入式的微波治疗设备
CN116991559A (zh) * 2023-09-25 2023-11-03 苏州元脑智能科技有限公司 不可中断的睡眠状态进程的退出方法和装置
CN116991559B (zh) * 2023-09-25 2024-02-02 苏州元脑智能科技有限公司 不可中断的睡眠状态进程的退出方法和装置

Similar Documents

Publication Publication Date Title
CN107480005A (zh) 一种Linux系统进程守护方法
US10747591B2 (en) Endpoint process state collector
CN104331327B (zh) 大规模虚拟化环境中任务调度的优化方法及优化系统
CN106776212B (zh) 容器集群部署多进程应用的监管系统及方法
WO2018223677A1 (zh) 一种基于图片资源的内存自动释放方法及系统
CN104410535A (zh) 一种云资源智能监控告警方法
CN110825495A (zh) 一种容器云平台的恢复方法、装置、设备及可读存储介质
CN103259688A (zh) 一种分布式存储系统的故障诊断方法与装置
CN105204936A (zh) 常驻进程管理通用平台及方法
CN110399207A (zh) 分布式存储系统中定时任务处理方法、系统及存储介质
CN106533817A (zh) 一种设置bmc属性信息的方法及装置
CN111813497A (zh) 一种容器环境异常检测的方法、装置、介质及计算机设备
CN107423942A (zh) 一种业务流转的方法及装置
CN107635026A (zh) 一种获取ip的方法及装置
CN108600284B (zh) 一种基于Ceph的虚拟机高可用实现方法及系统
CN109144787A (zh) 一种数据恢复方法、装置、设备及可读存储介质
CN108009004A (zh) 基于Docker的业务应用可用度测量监控的实现方法
CN107729217A (zh) 一种数据库异常处理方法和终端
CN102957563B (zh) Linux集群故障自动恢复方法和Linux集群故障自动恢复系统
CN106649000A (zh) 实时处理引擎的故障恢复方法及相应的服务器
CN106874126A (zh) 一种软件开发中主进程异常检测方法
CN102169436A (zh) 用于集成电路制造设备的通用控制内核系统
CN109922014B (zh) 一种交换机冷热启动判断方法及系统
CN104158843A (zh) 分布式文件存储系统的存储单元失效检测方法及装置
CN109947488A (zh) 通用功能模块的对象初始化方法、装置、设备和存储介质

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171215