supervisor 使用详解

supervisor 使用详解简介 supervisor 是用 Python 开发的一个 client server 服务 是 Linux Unix 系统下的一个进程管理工具 可以很方便的监听 启动 停止 重启一个或多个进程 用 supervisor 管理的进程 当一个进程意外被杀死 supervisor 监听到进程死后 会自动将它重启 很方便的做到进程自动恢复的功能 不再需要自己写 shell 脚本来控制 安装配置好 yum 源后 可以直接安装 yumi

简介

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

安装

配置好yum源后,可以直接安装

yum install supervisor

配置

安装好后在/etc/会生成一个supervisord.conf文件及一个supervisord.d文件目录

[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 = relative/directory/*.ini ;可以指定一个或多个以.ini结束的配置文件

注意:[include]默认配置是制定*.ini,因个人习惯命名为*.conf文件,因此修改配置如下:

[include] files = relative/directory/*.conf

supervisord.d目录用来存放用户自定义的进程配置,参考:

[program:es] command=/opt/software/elasticsearch/bin/elasticsearch user=es stdout_logfile=/opt/supervisor_test/run.log autostart=true autorestart=true startsecs=60 stopasgroup=true ikillasgroup=true startretries=1 redirect_stderr=true

注意: supervisor不能监控后台进程,command 不能为后台运行命令

服务段启动

supervisord -c /etc/supervisord.conf 

常用命令介绍

supervisorctl 是 supervisord的命令行客户端工具

  1. supervisorctl status:查看所有进程的状态
  2. supervisorctl stop es:停止es
  3. supervisorctl start es:启动es
  4. supervisorctl restart es: 重启es
  5. supervisorctl update :配置文件修改后可以使用该命令加载新的配置
  6. supervisorctl reload: 重新启动配置中的所有程序

把es 换成all 可以管理配置中的所有进程

supervisor 使用详解

踩过的坑

1、unix:///var/run/supervisor/supervisor.sock no such file

     解决办法:supervisord -c /etc/supervisord.conf 

2、command中指定的进程已经起来,但supervisor还不断重启

     问题描述:command中启动方式为后台启动,导致识别不到pid,然后不断重启,本人使用的是elasticsearch,command                        指定的是$path/bin/elasticsearch -d,踩到的坑

     解决办法:supervisor无法检测后台启动进程的pid,而supervisor本身就是后台启动守护进程,因此不用担心这个

3、启动了多个supervisord服务,导致无法正常关闭服务

    解决办法: 使用 ps -fe | grep supervisord 查看所有启动过的supervisord服务,kill相关的进程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206545.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:27
下一篇 2026年3月19日 下午3:27


相关推荐

  • 串口调试助手fx2n_安信可串口调试助手

    串口调试助手fx2n_安信可串口调试助手安信可串口调试助手是由安信可官方出品的一款非常好用的串口调试工具,利用安信可串口调试助手可以实现电脑和模块之间的串口通信,非常方便,有需要可以下载使用。相关软件软件大小版本说明下载地址安信可串口调试助手是由安信可官方出品的一款非常好用的串口调试工具,利用安信可串口调试助手可以实现电脑和模块之间的串口通信,非常方便,有需要可以下载使用。功能介绍ESP8266的串口调试助手,下载即用,可以实现电脑和模…

    2022年5月3日
    178
  • linux dstat,dstat 用法详解

    linux dstat,dstat 用法详解Windows 下有性能监视器 Linux 下当然也不示弱 亲还在用 vmstat iostat nfsstat netstat ifstat 来查看系统性能状态 那你就弱爆了 今天给亲一个神器 只需他一个你就可以得到以上这么多工具综合的功能 闲言表过 步入正题 dstat 如果系统没有些工具 yum yinstalldsta 安装下即妥 此软件小巧玲珑 软件包大小只有 144k 安装

    2025年9月13日
    7
  • h3c路由器配置nat转换命令_路由器nat地址转换配置

    h3c路由器配置nat转换命令_路由器nat地址转换配置#NAT的配置第一步,使用ACL来定义,需要做转换的源地址acladvanced6002rule2permitipsource192.168.55.00.0.0.255#NAT的配置第二步:用address-group来定义,希望转成什么公网地址nataddress-group1address192.168.88.155192.168.88.155natoutbound6002#NAT的配置第三步:在路由器的出接口,启用NAT参考资料:一看…

    2022年10月17日
    6
  • OpenClaw龙虾图鉴:16只AI Agent选型指南

    OpenClaw龙虾图鉴:16只AI Agent选型指南

    2026年3月13日
    3
  • RabbitMQ延迟队列

    RabbitMQ延迟队列RabbitMQ 延迟队列使用场景消息延迟推送的 预支付订单创建成功后 30 分钟后还未完成支付则自动修改订单状态 自动取消订单 用户注册成功后 如果 3 天没有登录则进行短信提醒 优惠券过期前发送短信进行提醒等业务场景

    2026年3月18日
    2
  • Latex 参考文献上标

    Latex 参考文献上标1.如何使连续的参考文献能够中间用破折号连起来?比如[6,7,8,9]变成[6-9]?方法:在文档开始前加上下面的语句命令\usepackage[numbers,sort&compress]{natbib}不但可以压缩参考文献标号,还可以进行排序,即无论正文里面的顺序怎样,显示出来都是先后顺序。在elsevier模板中,natbib包已经默认引用了,无需重新引用,改一下natb

    2025年10月16日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号