CN102331950B - 基于Linux操作系统定时任务的守护进程实现方法和系统 - Google Patents

基于Linux操作系统定时任务的守护进程实现方法和系统 Download PDF

Info

Publication number
CN102331950B
CN102331950B CN201110272417.XA CN201110272417A CN102331950B CN 102331950 B CN102331950 B CN 102331950B CN 201110272417 A CN201110272417 A CN 201110272417A CN 102331950 B CN102331950 B CN 102331950B
Authority
CN
China
Prior art keywords
finger daemon
task
linux
configuration file
information
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.)
Active
Application number
CN201110272417.XA
Other languages
English (en)
Other versions
CN102331950A (zh
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.)
Beijing ahtech network Safe Technology Ltd
Original Assignee
Beijing Antiy Electronic Equipment 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 Beijing Antiy Electronic Equipment Co Ltd filed Critical Beijing Antiy Electronic Equipment Co Ltd
Priority to CN201110272417.XA priority Critical patent/CN102331950B/zh
Publication of CN102331950A publication Critical patent/CN102331950A/zh
Application granted granted Critical
Publication of CN102331950B publication Critical patent/CN102331950B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于Linux定时任务的守护进程实现方法,包括:在Linux定时任务的配置文件中配置守护进程的信息;Linux定时任务根据配置文件的信息启动所述守护进程;读取配置文件信息,判断已开启的守护进程数是否达到了配置文件所设的最大启动数;查看任务队列状态,如果任务队列长度大于0,守护进程循环不断从任务队列中读取任务数据进行处理。本发明守护进程并不常驻系统中,不会一直占用系统资源,由定时任务所启动的,且会根据任务量合理的启动足够的进程数来处理待处理任务。

Description

基于Linux操作系统定时任务的守护进程实现方法和系统
技术领域
本发明涉及计算机操作系统领域,尤其涉及一种在Linux操作系统中,基于操作系统自带的定时任务服务,变相地实现一种更灵活更可靠更节省系统资源的守护进程的方法。
背景技术
守护进程也就是通常所说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。
使用守护进程有以下优点:
1、生存周期长,可以一直处理或者等待处理某种任务,有任务就处理,没有任务就暂时休眠;
2、一个单独的进程就可以工作,不需要其它子进程来工作。
因为守护进程有以上优点,因而我们常用它来做如下工作:
1、首先有一个任务队列,里面存放着待处理的任务,此队列先进先出,队列长度可能为0,也可能很长。
2、守护进程周期性的去查看任务队列的状态,如队列长度为0,则继续休眠。若长度不为0,则从队列头取出任务进行处理。依此循环执行。
但这种方式工作的传统守护进程有以下缺点:
1、守护进程一直运行于系统后台,即使没有任务也会存在,也会一直占用系统资源,尽管空闲时单个守护进程占用的系统资源较少,但是当一台机器上有多个守护进程时,这对系统资源是很大的浪费。
2、不能及时释放对其它服务的资源的占用。守护进程一般都会和其它服务相关联,比如和数据库服务,守护进程处理完任务后,需要将数据存入数据库,因而守护进程在启动之初都会开启一些数据库连接(数据库连接池),这样守护进程在整个运行的生命周期内都会占用此数据库连接资源,即使没有任务也会如此,而像数据库连接池等资源都是有限的,守护进程不能在空闲时释放这些资源,造成了其它服务无法获取这些资源。
3、守护进程的生命周期无法保证。守护进程在处理任务时可能会因各种情况而僵死,甚至进程终结。在守护进程死掉后,那么任务队列的任务也将无法得到及时处理。
发明内容
针对以上不足,本发明要解决的技术问题是提供一种基于Linux操作系统定时任务的守护进程实现方法,利用Linux的定时任务,变向的来实现一种新形态的守护进程。本发明所述的守护进程非传统的长时间运行于系统后台的进程,而是利用Linux定时任务,周期性的启用新进程,来处理任务队列的任务。
为了解决上述技术问题,本发明提供一种基于Linux操作系统定时任务的守护进程实现方法,包括:
在Linux定时任务的配置文件中配置守护进程的信息;
Linux定时任务根据配置文件的信息启动所述守护进程;
读取配置文件信息,判断已开启的守护进程数是否达到了配置文件所设的最大启动数,如果没有达到最大启动数,则将所述守护进程的PID(Process Identifier)存入缓存库中,否则终止所述守护进程;所述配置文件信息包括守护进程的最大启动数、守护进程日志保存地址、数据库配置信息;
所述守护进程查看任务队列状态,如果任务队列长度大于0,所述守护进程循环不断从任务队列中读取任务数据进行处理,如果任务队列长度不大于0,则从缓存库中删除所述守护进程的PID,终止所述守护进程。
进一步的,在Linux定时任务的配置文件中配置守护进程的信息包括守护进程启动的周期和守护进程启动命令。
进一步的,Linux定时任务根据配置文件中设置的时间间隔启动所述守护进程。
进一步的,守护进程根据数据库配置信息连接数据库,并将处理任务队列中的任务之后的结果存入数据库。
本发明还提供了一种基于Linux操作系统定时任务的守护进程实现系统,包括:
配置单元,用于在Linux定时任务的配置文件中配置守护进程的信息;
启动单元,用于Linux定时任务根据配置文件的信息启动所述守护进程;
判断单元,用于读取配置文件信息,判断已开启的守护进程数是否达到了配置文件所设的最大启动数,如果没有达到最大启动数,则将所述守护进程的PID(ProcessIdentifier)存入缓存库中,否则终止所述守护进程;
执行单元,用于所述守护进程查看任务队列状态,如果任务队列长度大于0,所述守护进程循环不断从任务队列中读取任务数据进行处理,如果任务队列长度不大于0,则从缓存库中删除所述守护进程的PID,终止所述守护进程。
本发明的有益效果是:
本发明中守护进程并不常驻系统中,不会一直占用系统资源,当有待处理的任务时,此守护进程才会启动。当没有待处理任务时,守护进程会立即释放系统资源,包括CPU、内存、存储空间、网络流量、电量等,同时也会立即释放其它服务资源。
本发明中守护进程是由定时任务所启动的,且会根据任务量合理的启动足够的进程数来处理待处理任务。当没有待处理任务时,系统中没有定时任务存在,当有大量待处理任务时,会依次启动大量的守护进程来处理任务。所以这种方法和单一的常驻系统的守护进程相比有着高度的灵活性和高效性。因此这种守护进程也具有更强大的计算能力,可以配合复杂深入的细粒度任务模型。
本发明中守护进程的数量依赖于待处理的任务数,因而单一的某个守护进程的僵死或终结,不会影响整个任务队列的处理情况,不会因为系统或程序错误造成大量任务积压保证了任务处理的实时性。
本发明依赖于Linux系统的定时任务。Linux系统的定时任务稳定、高效且配置操作简单,用它来调度守护进程十分方便,不需额外开启其它进程来做总的调度工作。既保证了守护进程的稳定性又减少了复杂性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于Linux操作系统定时任务的守护进程实现方法流程图;
图2为本发明基于Linux操作系统定时任务的守护进程实现方法具体实施例流程图;
图3为基于Linux操作系统定时任务的守护进程实现系统示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
本发明所述的守护进程非传统的长时间运行于系统后台的进程,而是利用Linux定时任务,周期性的启用新进程,来处理任务队列的任务。流程如图1所示:
S101、在Linux定时任务的配置文件中配置守护进程的信息;
在Linux定时任务的配置文件中配置守护进程的信息包括守护进程启动的周期和守护进程启动命令。
S102、Linux定时任务根据配置文件的信息启动所述守护进程;
Linux定时任务根据配置文件中设置的时间间隔启动所述守护进程。
S103、读取配置文件信息,判断已开启的守护进程数是否达到了配置文件所设的最大启动数,如果没有达到最大启动数,则将所述守护进程的PID存入缓存库中,否则终止所述守护进程;
S104、所述守护进程查看任务队列状态,如果任务队列长度大于0,所述守护进程循环不断从任务队列中读取任务数据进行处理,如果任务队列长度不大于0,则从缓存库中删除所述守护进程的PID,终止所述守护进程。
守护进程根据数据库配置信息连接数据库,并将处理任务队列中的任务之后的结果存入数据库。
下面给出本发明的一个具体实现方法,如图2所示:
S201、在Linux的定时任务中配置守护进程启动的周期和守护进程启动命令。
Linux定时任务配置格式如下:
*  *  *  *  *  * command
分  时  日  月  周  用户 命令(程序路径)
Linux的定时任务可以精确到分钟,根据任务队列数量或实际需要,灵活设置守护进程启动周期。并配置上守护进程的启动命令。
S202、Linux定时任务启动守护进程。
Linux定时任务会根据S201的设置,在设置时间间隔执行守护进程启动命令。
S203、守护进程读取配置文件信息。
配置文件信息主要包含守护进程的最大启动数、守护进程日志保存地址、数据库信息及其它配置信息。数据库信息包括:数据库名称,数据库IP地址,端口号,用户名,密码等。
S204、判断已开启的守护进程数是否达到了最大值。
因每个守护进程都会消耗一定系统资源,且定时任务每分钟都会开启一个守护进程,若任务队列里待处理任务较多时,守护进程都处于繁忙状态,这样随着定时任务的执行,守护进程会越开越多。会耗尽系统资源,所以必须设置一个可开启守护进程数量的最大值。当系统中已开启的守护进程数达到此值后,不再开启新的守护进程。
判断方法是守护进程先查看守护进程缓存库的长度,若长度小于所设最大值,则没有达到最大值,转到步骤S205。若长度大于或者等于所设最大值,则转至S209。
S205、将自身PID存入缓存库。
S206、守护进程处理任务队列。
首先,守护进程查看任务队列状态,若任务队列长度大于0,则从队列头读取数据进行处理。
若队列长度为0,表明无任务待处理。
S207、守护进程处理完任务后,继续查看队列状态,循环处理任务
守护进程处理完认领的任务后,再次查看任务队列状态,若任务队伍队列长度大于0,则再次认领任务。转至S206。
S208、守护进程删除缓存库中自身进程的PID。
为了回收系统资源,保证系统高效运转,当已启动的守护进程数量达到所设最大值时或任务队列中没有待处理的任务时,守护进程将守护进程缓存库中将自身PID删除。
S209、守护进程终止。
守护进程立即终止自身进程,释放资源。等待着下一次被定时任务启动。
本发明还提供了一种基于Linux操作系统定时任务的守护进程实现系统,如图3所示,包括:
配置单元301,用于在Linux定时任务的配置文件中配置守护进程的信息;
启动单元302,用于Linux定时任务根据配置文件的信息启动所述守护进程;
判断单元303,用于读取配置文件信息,判断已开启的守护进程数是否达到了配置文件所设的最大启动数,如果没有达到最大启动数,则将所述守护进程的PID存入缓存库中,否则终止所述守护进程;
执行单元304,用于所述守护进程查看任务队列状态,如果任务队列长度大于0,所述守护进程循环不断从任务队列中读取任务数据进行处理,如果任务队列长度不大于0,则从缓存库中删除所述守护进程的PID,终止所述守护进程。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。

Claims (5)

1.一种基于Linux操作系统定时任务的守护进程实现方法,其特征在于,包括以下步骤:
在Linux定时任务的配置文件中配置守护进程的信息;
Linux定时任务根据配置文件的信息启动所述守护进程;
读取配置文件信息,判断已开启的守护进程数是否达到了配置文件所设的最大启动数,如果没有达到最大启动数,则将所述守护进程的PID(Process Identifier)存入缓存库中,否则终止所述守护进程;所述配置文件信息包括守护进程的最大启动数、守护进程日志保存地址或者数据库配置信息;
所述守护进程查看任务队列状态,如果任务队列长度大于0,所述守护进程循环不断从任务队列中读取任务数据进行处理,如果任务队列长度不大于0,则从缓存库中删除所述守护进程的PID,终止所述守护进程。
2.如权利要求1所述的基于Linux操作系统定时任务的守护进程实现方法,其特征在于,在Linux定时任务的配置文件中配置守护进程的信息包括守护进程启动的周期和守护进程启动命令。
3.如权利要求1所述的基于Linux操作系统定时任务的守护进程实现方法,其特征在于,Linux定时任务根据配置文件中设置的时间间隔启动所述守护进程。
4.如权利要求1所述的基于Linux操作系统定时任务的守护进程实现方法,其特征在于,守护进程根据数据库配置信息连接数据库,并将处理任务队列中的任务之后的结果存入数据库。
5.一种基于Linux操作系统定时任务的守护进程实现系统,其特征在于,包括:
配置单元,用于在Linux定时任务的配置文件中配置守护进程的信息;
启动单元,用于Linux定时任务根据配置文件的信息启动所述守护进程;
判断单元,用于读取配置文件信息,判断已开启的守护进程数是否达到了配置文件所设的最大启动数,如果没有达到最大启动数,则将所述守护进程的PID(ProcessIdentifier)存入缓存库中,否则终止所述守护进程;
执行单元,用于所述守护进程查看任务队列状态,如果任务队列长度大于0,所述守护进程循环不断从任务队列中读取任务数据进行处理,如果任务队列长度不大于0,则从缓存库中删除所述守护进程的PID,终止所述守护进程。
CN201110272417.XA 2011-09-15 2011-09-15 基于Linux操作系统定时任务的守护进程实现方法和系统 Active CN102331950B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110272417.XA CN102331950B (zh) 2011-09-15 2011-09-15 基于Linux操作系统定时任务的守护进程实现方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110272417.XA CN102331950B (zh) 2011-09-15 2011-09-15 基于Linux操作系统定时任务的守护进程实现方法和系统

Publications (2)

Publication Number Publication Date
CN102331950A CN102331950A (zh) 2012-01-25
CN102331950B true CN102331950B (zh) 2017-02-22

Family

ID=45483736

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110272417.XA Active CN102331950B (zh) 2011-09-15 2011-09-15 基于Linux操作系统定时任务的守护进程实现方法和系统

Country Status (1)

Country Link
CN (1) CN102331950B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104008004B (zh) * 2013-02-27 2017-11-03 联想(北京)有限公司 一种进程保护方法和电子设备
CN104503750A (zh) * 2014-12-15 2015-04-08 北京奇虎科技有限公司 进程清理方法及装置
CN105677391A (zh) * 2015-12-30 2016-06-15 深圳联友科技有限公司 一种定时插件的实现方法及装置
CN105740073A (zh) * 2016-01-21 2016-07-06 浪潮(北京)电子信息产业有限公司 一种动态控制操作系统进程数量的方法及装置
CN106371927A (zh) * 2016-09-09 2017-02-01 深圳创维数字技术有限公司 一种Linux守护进程的实现方法及系统
CN106776219B (zh) * 2016-12-14 2020-02-21 郑州云海信息技术有限公司 一种服务器整机烧机的检测方法
CN106789350A (zh) * 2017-01-23 2017-05-31 郑州云海信息技术有限公司 一种支持服务器虚拟化系统主节点高可用的方法及装置
CN107748695B (zh) * 2017-10-24 2020-11-24 平安科技(深圳)有限公司 定时任务处理方法、装置、存储介质和计算机设备
CN109992394B (zh) * 2017-12-29 2021-08-17 Oppo广东移动通信有限公司 进程处理方法和装置、电子设备、计算机可读存储介质
CN109445927B (zh) * 2018-11-12 2021-09-17 郑州云海信息技术有限公司 一种存储集群的任务管理方法及装置
CN111414424B (zh) * 2020-03-23 2023-08-04 北京思特奇信息技术股份有限公司 一种配置数据自动同步redis的方法、系统、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178662A (zh) * 2006-11-08 2008-05-14 中兴通讯股份有限公司 一种嵌入式linux应用进程的监控方法
CN102103676A (zh) * 2011-02-28 2011-06-22 南京邮电大学 一种基于进程间继承关系的爪哇程序进程守护方法
CN102129393A (zh) * 2011-03-09 2011-07-20 南京恩瑞特实业有限公司 通用定时任务管理的实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101178662A (zh) * 2006-11-08 2008-05-14 中兴通讯股份有限公司 一种嵌入式linux应用进程的监控方法
CN102103676A (zh) * 2011-02-28 2011-06-22 南京邮电大学 一种基于进程间继承关系的爪哇程序进程守护方法
CN102129393A (zh) * 2011-03-09 2011-07-20 南京恩瑞特实业有限公司 通用定时任务管理的实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Linux中的定时任务探讨;陈素琴;《现代计算机》;20101231(第15期);第70-71页 *

Also Published As

Publication number Publication date
CN102331950A (zh) 2012-01-25

Similar Documents

Publication Publication Date Title
CN102331950B (zh) 基于Linux操作系统定时任务的守护进程实现方法和系统
CN109918141B (zh) 线程执行方法、装置、终端及存储介质
CN102866908B (zh) 一种Android后台应用和服务的清理方法
CN101599027B (zh) 一种线程池管理方法及其系统
CN103425592A (zh) 一种多进程系统中的内存管理方法及装置
CN102779072B (zh) 一种嵌入式系统及其应用进程的休眠与唤醒方法
WO2016041468A1 (zh) 一种唤醒方法、装置及终端
CN103345415B (zh) 管理定时器的终端节能方法和装置
CN106059835B (zh) 一种低能耗计算机集群节点的高可靠性控制方法
CN106774792A (zh) 电源管理方法及系统
EP4030289A1 (en) Method and device for virtual machine memory management
CN110647392A (zh) 一种基于容器集群的智能弹性伸缩方法
WO2016115956A1 (zh) 基于云计算的业务系统的调度方法及调度装置
CN101635650A (zh) 管理省电模式的方法及设备
WO2014139379A1 (zh) 一种异构操作系统中内核运行的方法及装置
WO2020000668A1 (zh) 一种基于服务器集群的任务执行方法及服务器
CN107766160A (zh) 队列消息处理方法及终端设备
CN103346902A (zh) 数据采集调度的方法及系统
EP2908465B1 (en) High availability method and system for improving the utility of physical servers in cloud computing resource pool
CN103955389A (zh) 一种基于pcm的系统启动方法
CN112231107B (zh) 防火墙的报文限速系统、方法、设备及介质
CN102736928A (zh) 快速唤醒计算机系统方法与计算机系统
CN111078441A (zh) 一种系统运行状态监测方法、装置及电子设备
WO2021207923A1 (zh) 集群扩容方法、装置、存储介质及电子设备
CN107948259A (zh) 一种云服务器资源的配置方法和配置系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 100190 Haidian District City, Zhongguancun, the main street, No. 1 Hailong building, room 1415, room 14

Applicant after: Beijing Antiy Electronic Installation Co., Ltd.

Address before: 100084, 2B-521, bright city, No. 1, Nongda South Road, Beijing, Haidian District

Applicant before: Beijing Antiy Electronic Installation Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 100190 Beijing city Haidian District minzhuang Road No. 3, Tsinghua Science Park Building 1 Yuquan Huigu a

Patentee after: Beijing ahtech network Safe Technology Ltd

Address before: 100190 Haidian District City, Zhongguancun, the main street, No. 1 Hailong building, room 1415, room 14

Patentee before: Beijing Antiy Electronic Installation Co., Ltd.

CP03 Change of name, title or address
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method and system for realizing daemon process based on Linux operation system timing task

Effective date of registration: 20170821

Granted publication date: 20170222

Pledgee: CITIC Bank Harbin branch

Pledgor: Beijing ahtech network Safe Technology Ltd

Registration number: 2017990000776

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20180817

Granted publication date: 20170222

Pledgee: CITIC Bank Harbin branch

Pledgor: Beijing ahtech network Safe Technology Ltd

Registration number: 2017990000776

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method and system for realizing daemon process based on Linux operation system timing task

Effective date of registration: 20180817

Granted publication date: 20170222

Pledgee: CITIC Bank Harbin branch

Pledgor: Beijing ahtech network Safe Technology Ltd

Registration number: 2018990000700

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20191021

Granted publication date: 20170222

Pledgee: CITIC Bank Harbin branch

Pledgor: Beijing ahtech network Safe Technology Ltd

Registration number: 2018990000700