一份极简的 Supervisor 使用说明

有助于你快速使用supervisor管理进程

参考:

安装,仅列出ubuntu下的方式:

sudo apt install supervisor

修改配置:
默认情况下,supervisord提供socket供supervisorctl与之通信,但socket文件仅允许root用户读写,修改配置文件/etc/supervisor/supervisord.conf[unix_http_server]部分的chmod值为0766,重启supervisord服务:,此时普通用户执行supervisorctl status命令不再报告权限问题。

添加应用:
/etc/supervisor/conf.d中添加应用配置,类似这样,minikube-dashboard.conf:

; document: http://supervisord.org/configuration.html#program-x-section-settings

[program:minikube-dashboard]

directory=/usr/local/bin
command=minikube dashboard --url

user=ian
environment=HOME="/home/ian"

stopasgroup=true

autostart=false
autorestart=false
startsecs=5
startretries=3

redirect_stderr=true
stdout_logfile=/home/ian/workspace/.log/minikube-dashboard.log

对部分配置项做一个说明:

  • user,启动进程的用户,由于程序作为supervisord的子进程启动,如果supervisord的属主是root,虽然子进程的属主是user指定的,但是环境变量仍然继承root,这就可能导致问题,比如minikube命令需要在HOME指示的路径下设置.minikube目录,普通用户在root家目录下创建文件显然是权限不够的,这样就需要environment配置覆盖相关的环境变量,参考Subprocess Environment
  • environment,覆盖环境变量
  • stopasgroup,将停止信号发送给进程组中的所有进程,以本例中的minikube-dashboard为例,执行启动命令后,将启动进程A,进程A会以子进程的方式启动进程B,如果stopasgroup为false,则执行命令supervisorctl stop minikube-dashboard后,只有进程A会收到中断信号,而进程B还在继续运行,本例中进程B会监听端口。这种现象通常会带来ctrl+ckill -2的疑问,使用ctrl+c在前台停止程序会将INT信号发送到进程组中的所有进程,而使用kill -2只会将INT信号发送到指定pid对应的进程。在supervisor中,可以指定使用的停止信号,并且对于不同的停止信号还有一些差异性的配置
  • autostart,开机启动
  • autorestart,进程退出时,是否重启,可以根据退出码做差异设置,参考文档
  • startsecs,进程在指定的时长内保持运行状态被认为启动成功,在此时间内进程只要进程退出就会被认为启动失败,如果是短时一次性任务,需要设置为0
  • startretries,将进程置于FATAL状态之前的重试次数,每次重试的间隔是逐渐加长的,每次进程重启失败后,进程处于BACKOFF状态
  • redirect_stderr,将标准错误重定向到标准输出

还有一部分值得关注的特性,全部特性和细节需要仔细翻阅官方文档

  • 如果停止了supervisord进程,它管理的program也会被停止,重启supervisord也意味着program的重启
  • 有些由supervisord创建的进程会忽略supervisord发送的信号,因为它启动了专门用来处理中断的进程,例如mysqld,这种情况参考pidproxy Program
  • supervisord可以监听所管理进程的监控事件,例如在占用过多内存时重启,参考Events
  • 可以支持规模化扩展,参考Third Party Applications and Libraries
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值