现在时间是:
当前位置:首 页 >> 网站开发>> 文章列表

systemd实现python的守护进程

作者:   发布时间:2016-12-21 16:13:28   浏览次数:1350

饶了一圈,攻克部署最后一个难关:

centos7 python3 flask表示无压力,从一开始Supervisor守护Python进程不支持python3,再到后来centos不支持upstart,再找别的进程守护大神。

绕了一圈最终还是centos7自带的systemd来拯救吧。

 

守护进程(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 start test.service 命令添加到 /etc/rc.d/rc.local

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掉。

 

 

http://blog.csdn.net/luckytanggu/article/details/53467687







上一篇:没有了    下一篇:没有了

Copyright ©2018    易一网络科技|www.yeayee.com All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 版权所有 © 2005-2018 lingw.net.粤ICP备16125321号 -5