systemd实现python的守护进程

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。(摘自百度百科

之前有转过一遍python实现守护进程方法的博客,这次我们看看用systemd是如何实现的。

有关systemd的介绍和使用推荐阮一峰老师的以下两篇博客,写的非常详细和全面

下面我们看看用systemd如何实现守护进程(我的环境Centos 7

#!/usr/bin/env python
# -*- coding=utf-8 -*-


"""
每隔5秒输出本地时间到指定的文件
path: /home/test.py
"""

import time


filepath = '/home/time' # 文件路径
fm = '%Y-%m-%d %X'

def get_time():
	while 1:
	    nowtime = time.strftime(fm, time.localtime())
	    with open(filepath, 'a') as fp:
	        fp.write(nowtime)
	        fp.write('\n')
	    time.sleep(5)
    
if __name__ == '__main__':
    get_time()

接着我们在/home目录下创建一个systemd的文件test.service

[Unit]
Description=test deamon
After=rc-local.service

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home
ExecStart=/usr/bin/python test.py
Restart=always

[Install]
WantedBy=multi-user.target

把此文件复制到systemd目录下: cp /home/test.service /etc/systemd/system/

启动: systemctl start test.service

ps -ef | grep python 查看python进程会发现多了/usr/bin/python test.py的进程

当我们人为kill掉此进程的时候,systemd会自动帮我们重启此进程

启动后查看time文件就会看到每隔5秒输出时间了: tail -f /home/time

停止: systemctl stop test.service

如果想开机启动此服务

$ systemctl enable test.service
# 以上命令相当于执行以下命令,把test.service添加到开机启动中
$ sudo ln -s  '/etc/systemd/system/test.service'  '/etc/systemd/system/multi-user.target.wants/test.service' 

systemd 实现守护进程是不是so easy 啊!比起python代码方式实现真的容易方便多了

注:现在大部分Linux衍生版本都支持systemd(如centos,deepin),部分不支持(如:Ubuntu14.04之前的版本)

查看系统是否支持systemd:systemctl --version 如果提示未找到命令则说明系统不支持systemd

查看系统详细信息:hostnamectl


注:由systemd起的任何服务,当我们停掉该systemd时,服务也会随之停掉

比如说,我们自己定义了一个systemd service,用来执行某python脚本,而该脚本启动mysql、nginx服务,当我们停掉该systemd service(systemctl stop xxx.service)时,mysql和nginx服务也会停(kill)掉。因为这两个服务是有systemd起的,当systemd服务停/kill掉时,由该systemd服务所起的服务或进程也会停/kill掉。

systemd-python-219-62.el7.x86_64是一个软件包的名称,用于在CentOS 7操作系统上安装systemd系统和Python编程语言的库文件。 systemd是一个Linux系统初始化和管理守护进程的系统和服务管理器。它提供了一种更现代和全面的方法来启动、停止和管理系统服务。通过systemd,用户可以方便地控制启动时加载的服务、模块和其他资源。 Python是一种流行的高级编程语言,具有简洁而易于阅读的语法,广泛用于Web开发、数据分析、机器学习等领域。在CentOS 7操作系统中,Python是默认安装的,但系统提供的Python库可能有限。因此,安装systemd-python-219-62.el7.x86_64软件包可以为Python开发者提供更强大和全面的功能。 该软件包包含了与systemd集成的Python库文件,用户可以使用这些库文件来编写与系统管理相关的Python脚本或程序。它提供了访问systemd的API接口,可以方便地管理系统服务、单元、进程和其他资源。通过systemdPython库,开发者可以控制、监视和查询系统的状态,以及执行各种系统级操作。 要安装systemd-python-219-62.el7.x86_64软件包,可以使用系统的包管理器如yum或dnf。首先确保系统已连接到互联网,然后打开终端并输入适当的命令来安装该软件包。安装完成后,开发者可以使用Python编写与系统管理相关的功能,并利用systemd的强大功能来提高系统的管理和控制能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值