本发明涉及系统管理技术领域,具体的说是一种基于Python多进程库创建systemd服务的方法。
背景技术:
systemd是linux下的进程管理系统,主要用来管理各种进程,对一些常驻进程进行监控或者用于收发消息,便于用户通过系统实现相应的功能。
传统上对于这类功能的应用,一般都是编写一个shell脚本,然后用nohup加上后台运行符‘&’让程序在后台运行提供服务,但是这种方法智能实现简单的监控,无法实现systemd的统一管理,运维效果较差。
技术实现要素:
为了解决上述问题,提供了一种基于Python多进程库创建systemd服务的方法,基于python的多进程库和linux的systemd系统来实现一套更加方便管理的守护进程,从而创建更易用的服务程序,提高运维效率。
本发明实施例提供了一种基于Python多进程库创建systemd服务的方法,所述的方法包括:
S1:利用Python多进程库启动子程序,并创建相应功能的主体代码;
S2:利用函数指令退出主程序;
S3:创建服务启动脚本及配置文件,并发送给systemd。
进一步的,所述的方法还包括:
S4:systemd启动服务。
进一步的,步骤S4的具体实现过程为:systemd利用systemctl命令安装服务,并启动服务。
进一步的,步骤S1的具体实现过程为:
基于想要实现的功能,在Python多进程库中选取相应的进程类;
利用选取的进程类启动其对应的子程序;
在启动的子程序内完成要进行工作的主体代码。
进一步的,步骤S2的具体实现过程为:确定子程序征程运行后,启用os._exit()函数退出主程序。
进一步的,步骤S3的具体实现过程为:
创建启动服务的脚本;
创建systemd配置文件,并将服务类型设置为forking类型;
将创建完成的所有服务信息发送给systemd。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
1、本方案利用Python多进程库来编写符合systemd管理规范的服务,创建出来的服务可以统一被systemd管理,增加服务的可管理性,降低运维成本。
2、利用Python多进程库中相应的进程类启动其对应的子程序,并在启动的子程序内完成要进行工作的主体代码,可以实现对进程工作的守护,确保进程不会意外终止。
3、利用os._exit()函数退出主程序,不会对程勋运行产生影响,为后续创建符合systemd管理规范的服务提供了便利。
附图说明
图1是本发明实施例1的方法流程图;
图2是本发明实施例2的方法流程图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例1
如图1所示的一种基于Python多进程库创建systemd服务的方法,所述的方法包括:
S1:利用Python多进程库启动子程序,并创建相应功能的主体代码。具体实现过程为:
1)基于想要实现的功能,在Python多进程库中选取相应的进程类。
2)利用选取的进程类,启动其对应的子程序。
3)在启动的子程序内完成要进行工作的主体代码,主要目的是确保子程序可以单独实现进程功能。
S2:利用函数指令退出主程序。具体实现过程为:确定子程序征程运行后,启用os._exit()函数退出主程序。
S3:创建服务启动脚本及配置文件,并发送给systemd。具体实现过程为:首先,创建启动服务的脚本;然后,创建编写systemd配置文件,并将服务类型设置为forking类型;最后,将创建完成的所有服务信息发送给systemd。
实施例2
如图2所示的一种基于Python多进程库创建systemd服务的方法,所述的方法包括:
S1:利用Python多进程库启动子程序,并创建相应功能的主体代码。具体实现过程为:
1)基于想要实现的功能,在Python多进程库中选取相应的进程类。
2)利用选取的进程类,启动其对应的子程序。
3)在启动的子程序内完成要进行工作的主体代码,主要目的是确保子程序可以单独实现进程功能。
S2:利用函数指令退出主程序。具体实现过程为:确定子程序征程运行后,启用os._exit()函数退出主程序。
S3:创建服务启动脚本及配置文件,并发送给systemd。具体实现过程为:首先,创建启动服务的脚本;然后,创建systemd配置文件,并将服务类型设置为forking类型;最后,将创建完成的所有服务信息发送给systemd。
S4:systemd启动服务。具体实现过程为:systemd利用systemctl命令安装服务,并启动服务。
尽管说明书及附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。