2018年12月23日 11:30 · 阅读 12608
在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式是: 这样能保证当前终端被关闭或者按CRTL+C后,脚本仍在后台运行。但是没法保证脚本异常后自动重启等。 Supervisor 是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。 官网介绍:supervisord.org/ 本文所用环境: 引自官网(supervisord.org/introductio…): Supervisor已经过测试,可以在Linux(Ubuntu 9.10),Mac OS X(10.4 / 10.5 / 10.6)和Solaris(10 for Intel)和FreeBSD 6.1上运行。它可能在大多数UNIX系统上都能正常工作。在任何版本的Windows下,Supervisor 都不会运行。Supervisor 可以使用 我使用的环境: 安装方法有: 1、easy_install 安装(需安装有pip): 2、pip 安装(需安装有pip,推荐):
3、Debian / Ubuntu可以直接通过apt安装:
本文测试的时候是使用pip安装的。其它方式未做测试。 安装后配置文件生成: 1、通过easy_install或pip安装后,需要运行
生成配置文件。 2、使用
supervisor的配置文件默认是不全的。子进程配置文件在:
启动supervisor我们先修改
这样就可以支持子配置文件,而不用改动主配置文件。 启动方法一般有: 1、使用
即可运行。
如需指定主配置文件,则需要使用
查看安装的版本:
然后查看supervisor的状态:
2、使用
运行。 使用示例我们以简单的
在
然后启动程序:
这两个命令分别代表重新读取配置、更新子进程组。执行update后输出:
这样刚才添加的
也可以使用
配置文件主配置主配置文件名: supervisord.conf 可以通过运行
子进程配置文件一般放在: 配置说明:
简化模板
命令行程序supervisordsupervisord 是主进程。 通过
supervisorctlsupervisorctl 是客户端程序,用于向supervisord发起命令。 通过
这些命令对于控制子进程非常重要。示例:
supervisord 有进程组(process group)的概念:只有子进程在进程组,才能被运行。
web界面操作需要开启
端口默认是监听
然后重启主进程supervisord:
浏览器访问:http://myip:9001 ,输入用户名、密码后,即可看到web页面:
其它问题1、Centos6 docker环境没有pip 解决方案:需要先安装扩展源EPEL。
首先安装epel扩展源:
然后再安装pip
查看版本:
参考:www.cnblogs.com/saolv/p/696… 2、Centos6环境安装
出现:
原因:pip安装的meld3不可用,手动安装。
3、因参考github里meld3解决方案导致pip不可用:
解决方案:删除
参考:stackoverflow.com/questions/5… 参考1、Supervisor: A Process Control System — Supervisor 3.3.4 documentation 版权申明:没有标明转载或特殊申明均为作者原创。本文采用以下协议进行授权,自由转载 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,转载请注明作者及出处。 作者:飞鸿影~ 出处:http://52fhy.cnblogs.com/ 推荐!每月仅需2.5美元,即可拥有配置SSD的VPS! [推荐] Redis 深度历险:核心原理与应用实践 纯干货!大型互联网企业 Redis 实践总结,结合实际问题深入讲解 Redis 内部机制! |