进程管理工具

目录

一、进程管理工具(Supervisor) 简介

二、Supervisor安装与配置

介绍Supervisor


一、进程管理工具(Supervisor) 简介

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

二、Supervisor安装与配置

centos 
yum install supervisor

alpine
apk add supervisor

安装 Supervisor 后,会出现 supervisorctl 和 supervisord 两个程序,其中 supervisorctl 为服务监控终端,而 supervisord 才是监控服务进程的。

介绍Supervisor

- supervisord

运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。

- supervisorctl

是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。

supervisor是所有进程的父进程,管理着启动的子进展,supervisor以子进程的PID来管理子进程,当子进程异常退出时supervisor可以收到相应的信号量。

配置文件说明
 
默认配置文件位置在/etc/supervisord.conf
 
主配置部分
[unix_http_server] 
file=/tmp/supervisor.sock ; socket文件的路径 
;chmod=0700 ;socket文件权限 
;chown=nobody:nogroup ; socket文件用户和用户组 
;username=user ; 连接时认证的用户名 
;password=123 ; 连接时认证的密码 

[inet_http_server] ; 监听TCP 
port=127.0.0.1:9001 ; 监听ip和端口 
username=user ; 连接时认证的用户名 
password=123 ; 连接时认证的密码 

[supervisord] 
logfile=/var/log/supervisord.log ; log目录 
logfile_maxbytes=50MB ; log文件最大空间 
logfile_backups=10 ; log文件保持的数量 
loglevel=info ; log级别 
pidfile=/var/run/supervisord.pid 
nodaemon=false ; 是否非守护进程态运行 
minfds=1024 ; 系统空闲的最少文件描述符 
minprocs=200 ; 可用的最小进程描述符 
;umask=022 ; 进程创建文件的掩码 
;identifier=supervisor ; supervisord标识符 
;directory=/tmp ; 启动前切换到的目录 
;nocleanup=true ; 启动前是否清除子进程的日志文件 
;childlogdir=/tmp ; AUTO模式,子进程日志路径 
;environment=KEY="value" ; 设置环境变量 

[rpcinterface:supervisor] ; XML_RPC配置 
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 

[supervisorctl] 
serverurl=unix:///tmp/supervisor.sock ; 连接的socket路径 
;username=chris ; 用户名 
;password=123 ; 密码 
prompt=mysupervisor ; 输入用户名和密码时的提示符 
;history_file=~/.sc_history ; 历史操作记录存储路径 

[include] ; 包含文件,将每个进程配置为一个文件并包含 
files = /etc/supervisor/*.ini ; 多个进程的配置文件
这部分不需要做太多的配置修改,如果需要开启 WEB 终端监控,则需要配置并开启 inet_http_server 项。
 
进进程程配配置置部部分分
Supervisor 需管理的进程服务配置,示例如下:
[program:work] ; 服务名,例如work 
command=php /var/www/html/consumer.php ; 带有参数的可执行命令 
process_name=%(process_num)s ; 进程名,当numprocs>1时,需包含%(process_num)s 
numprocs=2 ; 启动进程的数目数 
;directory=/tmp ; 运行前切换到该目录 
;umask=022 ; 进程掩码 
;priority=999 ; 子进程启动关闭优先级 
autostart=true ; 子进程是否被自动启动 
startsecs=1 ; 成功启动几秒后则认为成功启动 
;startretries=3 ; 子进程启动失败后,最大尝试启动的次数 
autorestart=unexpected ; 子进程意外退出后自动重启的选项,false, unexpected, true。unexpected表示不在exitcodes列表时重启 
exitcodes=0,2 ; 期待的子程序退出码 
;stopsignal=QUIT ; 进程停止信号,可以为TERM,HUP,INT,QUIT,KILL,USR1,or USR2等信号,默认为TERM ;stopwaitsecs=10 ; 发送停止信号后等待的最大时间 
;stopasgroup=false ; 是否向子进程组发送停止信号 
;killasgroup=false ; 是否向子进程组发送kill信号 
;redirect_stderr=true ; 是否重定向日志到标准输出 
stdout_logfile=/var/www/html/logs/work.log ; 进程的stdout的日志路径 
;stdout_logfile_maxbytes=1MB ; 日志文件最大大小 
;stdout_logfile_backups=10 
;stdout_capture_maxbytes=1MB 
;stderr_logfile=/a/path ; stderr的日志路径
启动
 
配置完成后,启动 supervisord 守护服务: $ supervisord -c /etc/supervisord.conf
 
命令终端
 
直接使用 supervisorctl 即可在命令行终端查看所有服务的情况,如下:
 
$ supervisorctl
 
supervisorctl 常用命令列表如下:
 
status :查看服务状态
update :重新加载配置文件
restart :重新启动服务
stop :停止服务
pid :查看某服务的 pid
tail :输出最新的 log 信息
shutdown :关闭 supervisord 服务

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值