一文搞懂supervisor进程管理

本文详细介绍了supervisor,一个用Python编写的进程管理工具。内容包括supervisord和supervisorctl的职责、安装方法、配置文件详解、template提取以及常用命令。讲解了如何设置服务端和客户端连接,以及日志管理和进程管理的最佳实践。
摘要由CSDN通过智能技术生成

supervisor

使用Python编写的进程管理程序supervisor来管理Python程序那是最合适不过了,supervisor基于CS架构,主要有以下两个组成部分:

  1. supervisord:supervisord是supervisor的服务端程序。负责启动子程序,应答客户端命令,子程序日志记录,对进程变化发送事件通知等
  2. supervisorctl: 客户端命令行工具,可以连接服务器端,进行进程的启动、关闭、重启、状态查看等。重要的一点是,supervisorctl不仅可以连接到本机上的supervisord,还可以连接到远程的supervisord,当然在本机上面是通过UNIX socket连接的,远程是通过TCP socket连接的。supervisorctl和supervisord之间的通信,是通过xml_rpc完成的。 相应的配置在[supervisorctl]块里面

安装

基于ubuntu16.04,不同linux发行版均可使用包管理器进行安装,也可以使用源码安装和pip安装

apt-get install python-setuptools
apt-get install supervisor

pip安装方法

pip install supervisor

当前最新版本3.3.3,supervisord.conf 和supervisord.d文件夹已自动生成在/etc/supervisor/目录下。可以使用echo_supervisord_conf命令将配置信息重定向到制定目录,比如/etc

echo_supervisord_conf > /etc/supervisor/supervisord.conf

服务端启动

supervisord -c /etc/supervisor/supervisord.conf

查看supervisord是否在运行

ps aux | grep supervisord

supervisord.conf详解

使用echo_supervisord_conf查看supervisord.conf可选的配置项:

echo_supervisord_conf help

详情如下

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
;  - Shell expansion ("~" or "$HOME") is not supported.  Environment
;    variables can be expanded using this syntax: "%(ENV_HOME)s".
;  - Comments must have a leading space: "a=b ;comment" not "a=b;comment".

[unix_http_server]
file=/tmp/supervisor.sock   ; socket 文件路径
;chmod=0700                 ; socket 文件 模式 (默认 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; 使用supervisorctl连接的用户,默认没有用户
;password=123               ; 使用supervisorctl连接的用户密码,默认没有密码

;[inet_http_server]         ; Web Server和远程的supervisorctl 配置块(默认关闭)
;port=127.0.0.1:9001        ; 监听的地址和端口
;username=user              ; 登录用户,默认没有用户
;password=123               ; 登录密码,默认没有密码

[supervisord]
logfile=/tmp/supervisord.log ; supervisord进程日志路径
logfile_maxbytes=50MB        ; supervisord进程单个日志文件大小,默认为50M
logfile_backups=10           ; 日志文件个数,默认为10个
loglevel=info                ; 日志级别,默认为info,还支持debug,warn,trace)
pidfile=/tmp/supervisord.pid ; supervisord的pid文件路径。
nodaemon=false               ; 如果是true,supervisord进程将在前台运行 默认为false(后台运行)
minfds=1024                  ; 这个是最少系统空闲的文件描述符,低于这个值supervisor将不会启动
minprocs=200                 ; 最小可用的进程描述符,低于这个值supervisor也将不会正常启动
;umask=022                   ; 进程创建文件的掩码 (默认 022)
;user=chrism                 ; user参数指定的用户也可以对supervisord进行管理
;identifier=supervisor       ; supervisord的标识符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值