一、前言简介

1、Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程。可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。

2、Supervisor 安装完成之后,可以编写配置文件,来满足自己的需求。为了方便,我们把配置分成两部分:supervisord(这是 server 端,对应的有 client 端:supervisorctl)和应用程序(即我们要管理的程序)。

supervisord(server 部分):主要负责管理子进程,响应客户端命令以及日志的输出等,受控的监听进程都会以其子进程地方式出现,不过如果supervisord的主进程非正常退出时,被管理的进程仍然是运行状态。

supervisorctl(client 部分):命令行客户端,用户可以通过它与不同的 supervisord 进程联系,获取子进程的状态等。

3、Supervisord 要求管理的程序是非daemon程序,supervisord 会帮你把它转成daemon程序,因此如果用supervisord来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off让nginx以非daemon方式启动,当然了,redis等亦如是。

二、安装supervisor

1、安装supervisor

[root@localhost ~]# pip install supervisor

2、测试supervisor安装是否成功

[root@localhost ~]# echo_supervisord_conf

3、卸载supervisor

[root@localhost ~]# pip uninstall supervisor

supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf。分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。

三、配置supervisord

安装 supervisor 完成之后,可以编写配置文件,来满足自己的需求。为了方便,我们把配置分成两部分:supervisord(这是 server 端,对应的 client 端:supervisorctl)和应用程序(即我们要管理的程序)。首先来看 supervisord 的配置文件。

1、通过运行 echo_supervisord_conf 命令生成 supervisor 的初始化配置文件:supervisord.conf(supervisord.conf文件的位置无所谓,这里当作第二个位置)

[root@localhost ~]# echo_supervisord_conf > /etc/supervisord.conf

[root@localhost ~]# echo_supervisord_conf > /etc/supervisor/supervisord.conf

2、启动 supervisord 服务(通过 -c 选项指定配置文件路径,如果不指定会按照这个顺序查找配置文件:$CWD/supervisord.conf,  $CWD/etc/supervisord.conf,  /etc/supervisord.conf,  /etc/supervisor/supervisord.conf):

[root@localhost ~]# supervisord # 默认去找 /etc/supervisord.conf 这个配置文件

[root@localhost ~]# supervisord -c /etc/supervisord.conf # 到指定路径下去找配置文件

[root@localhost ~]# supervisord -c /etc/supervisor/supervisord.conf # 到指定路径下去找配置文件

3、查看 supervisord 服务是否在运行:

[root@localhost ~]# ps aux | grep supervisord

4、查看 supervisord 服务是否生效

[root@localhost ~]# ps -ef | grep ProjectName

四、配置文件参数说明

[unix_http_server]

file=/tmp/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用

;chmod=0700 ;socket文件的mode,默认是0700

;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid

;[inet_http_server] ;HTTP服务器,提供web管理界面

;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性

;username=user ;登录管理后台的用户名

;password=123 ;登录管理后台的密码

[supervisord]

logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord.log

logfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小

logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份

loglevel=info ;日志级别,默认info,其它: debug,warn,trace

pidfile=/tmp/supervisord.pid ;pid 文件

nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动

minfds=1024 ;可以打开的文件描述符的最小值,默认 1024

minprocs=200 ;可以打开的进程数的最小值,默认 200

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致

;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord

; [program:xx]是被管理的进程配置参数,xx是进程的名称

[program:xx]

command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令

autostart=true ; 在supervisord启动的时候也自动启动

startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒

autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启

startretries=3 ; 启动失败自动重试次数,默认是3

user=tomcat ; 用哪个用户启动进程,默认是root

priority=999 ; 进程启动优先级,默认999,值小的优先启动

redirect_stderr=true ; 把stderr重定向到stdout,默认false

stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB

stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10

; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)

stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out

stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程

killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程

;包含其它配置文件

[include]

files = /www/server/panel/plugin/supervisor/profile/*.ini ;可以指定一个或多个以.ini结束的配置文件

五、配置supervisord开机自启

1.在 /usr/lib/systemd/system/ 目录下面新建文件supervisord.service,并写入如下内容:

[Unit]

Description=Process Monitoring and Control Daemon(Supervisor daemon)

After=rc-local.service nss-user-lookup.target

[Service]

Type=forking

ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf

ExecStop=/usr/bin/supervisord shutdown

ExecReload=/usr/bin/supervisord reload

killMode=process

Restart=on-failure

RestartSec=42s

[Install]

WantedBy=multi-user.target

2.启动服务:执行开机启动命令,让 supervisord 服务开机自启。

[root@localhost ~]# systemctl enable supervisord

3.验证一下是否为开机启动。enabled:开机自启。disabled:开机不自启。

[root@localhost ~]# systemctl is-enabled supervisord

4.重启服务器,检查 supervisor 是否启动。

[root@localhost ~]# ps aux | grep supervisor

六、Web管理页面

supervisor提供了可视化的Web管理页面,允许远程操作,但是需要在配置文件中手动打开。可以在网页端访问supervisor服务。

注意:如果是腾讯云或阿里云服务器,需要安全组放行9001端口,才能访问。

# 1.打开配置配件

[root@localhost ~]# vi /etc/supervisor/supervisord.conf

# 2.将下面几行前面的分号去掉,修改一下数据保存退出(用户名与密码自己定义)

[inet_http_server] # inet (TCP) server disabled by default

port=0.0.0.0:9001 # ip_address:port specifier, *:port for all iface

username=user # default is no username (open server)

password=123 # default is no password (open server)

# 3.重新载入配置文件

[root@localhost ~]# supervisorctl reload

# 4.在浏览器输入:IP:9001,再输入用户名与密码即可登陆查看。

七、开启多个进程

numprocs=2 # 启动进程的数目,默认为1。; 若 numprocs 不为1时,就是进程池的概念。process_name 的表达式中一定要包含 process_num 来区分不同的进程。

process_name=%(program_name)s_%(process_num)02d # 直接就可以使用

八、Supervisor管理的项目名称是中文的问题解决

在配置文件中添加或修改:environment=LANG="en_US.UTF-8",LC_ALL="en_US.UTF-8"。例如:

environment=LANG="en_US.UTF-8",LC_ALL="en_US.UTF-8"

[include]

files = /www/server/panel/plugin/supervisor/profile/*.ini

九、常见报错问题

1、Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord。

[root@localhost ~]# ps -ef | grep supervisord # 获取所有supervisord正在运行的pid。假设pid值为2506

[root@localhost ~]# kill -s SIGTERM 2506 # 杀死进程,之后再重新执行:supervisord -c /etc/supervisor/supervisord.conf 即可。

2、pip下载报错

[root@localhost ~]# /www/server/panel/pyenv/bin/pip install supervisor -i http://pypi.douban.com/simple --trusted-host pypi.douban.com --ignore-installed meld3

python守护进程进程池_Python—守护进程管理工具(Supervisor)相关推荐

  1. python怎么打开程序管理器_Python 进程管理工具 Supervisor 使用教程

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python 进程管理工具 Supervisor 使用教程 Supervisor ...

  2. 进程管理工具(Supervisor)笔记

    感谢GoFrame框架实战2群的 朽木自雕 大佬提供的Supervisor笔记 # 开发笔记## [进程管理工具(Supervisor)](http://supervisord.org/introdu ...

  3. Linux进程管理工具 Supervisor详解

    介绍 Supervisor安装与配置(linux/unix进程管理工具) Supervisor(http://supervisord.org)是用Python开发的一个client/server服务, ...

  4. 进程管理工具supervisor的使用、常见报错问题处理

    进程管理工具supervisor的使用.常见报错问题处理 1 安装 2 简介 2.1 supservisor自身提供三个命令: 2.1.1 supervisorctl 2.1.2 supervisor ...

  5. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  6. python3第三方库手册_python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑...

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  7. win python 判断 所有 子进程 结束_python 多进程 进程池子进程结束怎么获取

    匿名用户 1级 2016-10-26 回答 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用mu ...

  8. python怎么打开程序管理器_python进程管理工具supervisor的安装与使用教程

    前言 在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便.如果有一个工具能够实现每台机器上多个进程的简单高效中心化 ...

  9. 进程管理工具Supervisor

    简介 Supervisor是一个客户端/服务器系统,允许用户在类UNIX操作系统上控制许多进程.它是基于python语言开发一个进程管理工具. Supervisor的服务器端称为supervisord ...

最新文章

  1. Visio绘制功能分解图
  2. java inflaterinputstream_java – Android InflaterInputStream是否与流行的ZLIB Windows库相同?...
  3. ps -aux返回超过100%
  4. Oracle INTERVAL DAY TO SECOND数据类型
  5. 版本分支管理标准 - Trunk Based Development 主干开发模型
  6. @value注解_Java系列之注解
  7. Hdu 4514 湫湫系列故事——设计风景线
  8. Hooks中的useState
  9. 网页连接的服务器失败是怎么回事啊,网页怎么连接服务器失败
  10. C#中如何创建文件夹,复制文件夹,删除文件夹的方法
  11. VUE引入ntko office在线编辑器
  12. Pycharm处理 E501 line too long 警告
  13. 完美解决Windows 7更新失败(Windows Update 错误 80070003)
  14. windows资源管理器转圈崩溃
  15. 怎么恢复我在计算机里删掉的文档,如题,如何彻底删除电脑中的文件,使文件不能恢复?(我的方式是直接? 爱问知识人...
  16. 【oracle工具】plsqldev美化规则文件详细解释(关键字大写,标识符小写等规则)
  17. 快来抄吧:Project Plan Template 项目计划模板
  18. 基于Python3.6实现Java版murmurhash算法
  19. Batch和Epoch之间的区别是什么?
  20. svn发布网站(转载于badb0y)

热门文章

  1. 2018阿里巴巴全球诸神之战创客大赛总决赛即将举行
  2. 可折叠的table表格
  3. 6.1、减肥计划,不死神兔,百钱百鸡案例
  4. UWB 技术 DW1000 芯片配套MCU STM32L100C6U6
  5. 【三维目标检测】3DSSD(一)
  6. Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)
  7. 戴尔计算机专业推荐笔记本电脑,戴尔笔记本推荐
  8. 题解:Summation of Four Primes(整数分解四个素数和)
  9. 使用Webpack构建SPA模式的多页面应用(基于Vue 2)
  10. 一图看懂信用报告在线查询指南