Supervisor服务自启动

Supervisor服务自启动

解决方案goocz2025-03-23 18:07:0626A+A-

介绍

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

安装

centos

yum install epel-release

yum install -y supervisor

systemctl enable supervisord # 开机自启动

systemctl start supervisord # 启动supervisord服务

systemctl status supervisord # 查看supervisord服务状态

配置

默认配置文件的目录:

/etc/supervisord.conf #主配置文件 
/etc/supervisord.d/ #单服务配置文件的目录

主配置文件需要的改动(supervisord.conf):

[include] 
files = supervisord.d/*.conf #默认是ini,可以修改为conf

主配置文件其它地方一般默认就好,若有特殊的需求可以问我或者自行百度。

单个服务的配置文件:

每个需要supervisor进行管理的服务最好单独配置在/etc/supervisord.d目录下,介绍如下:

[program:x]:配置文件必须包括至少一个program,x是program名称,必须写上,不能为空

  • command:包含一个命令,当这个program启动时执行
  • directory:执行子进程时supervisord暂时切换到该目录
  • user:账户名
  • startsecs:进程从STARING状态转换到RUNNING状态program所需要保持运行的时间(单位:秒)
  • redirect_stderr:如果是true,则进程的stderr输出被发送回其stdout文件描述符上的supervisord
  • stdout_logfifile:将进程stdout输出到指定文件
  • stdout_logfifile_maxbytes:stdout_logfifile指定日志文件最大字节数,默认为50MB,可以加KB、MB或GB等单位
  • stdout_logfifile_backups:要保存的stdout_logfifile备份的数量

特别说明:supervisor不能够管理后台运行的服务,所以有些服务如果需要supervisor进行管理的话,特殊配置一下。Tomcat的常用启动命令在linux中就会默认后台运行,所以用它举例(参照本地机器):

1. 在/etc/supervisord.d/目录下新建cat.conf文件。

[program:tomcat] 
#tomcat中catalina.sh所在位置 加上 run 
command=/root/task/apache-tomcat-7.0.68/bin/catalina.sh run 
#jdk安装目录 
environment=JAVA_HOME="/usr/lib/jvm/java-8-oracle",JAVA_BIN="/usr/lib/jvm/java-8- oracle/bin"
#执行时切换到tomcat所在目录 
directory=/root/task/apache-tomcat-7.0.68 
#执行的用户 
user=root 
autostart = true 
autorestart=true 
redirect_stderr=true

2. systemctl status supervisord重启服务。

3. 通过supervisord启动tomcat.

supervisorctl start tomcat

介绍一下supervisorctl命令

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

  1. supervisorctl status:查看所有进程的状态
  2. supervisorctl stop tomcat
  3. supervisorctl start tomcat
  4. supervisorctl restart tomcat
  5. supervisorctl update
  6. supervisorctl reload

注意事项:

  1. 前面说过,后台进程supervisor管不到,类似ES -d,Tomcat (startup)之类的启动命令默认是后台命令,需要特殊处理,不然的话服务应该会不断的重启。
  2. supervisord 服务启动一个就好,不要启动多个。
  3. 通过supervisord管理的服务需要通过supervisro 启动。
  4. 重新部署项目的时候需要停掉supervisord服务,不然服务会一直重启(默认三次)。



点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5