supervisor管理启动重启,Java,Go程序Demo

简介

Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启

1、安装

复制代码
yum -y install supervisor

2、配置默认配置文件

c 复制代码
echo_supervisord_conf > /etc/supervisord.conf

3、修改主配置文件配置

c 复制代码
vim /etc/supervisord.conf
... ...
# 其他配置保持默认即可
[include]
files = /etc/supervisord.d/*.ini
# 开启web控制台
[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9009        ; ip_address:port specifier, *:port for all iface
username=root              ; default is no username (open server)
password=root               ; default is no password (open server)

4、创建子进程 supervisor.ini 配置文件之后放在 /etc/supervisord.d/ 文件夹下

giftpanel go程序

recharge java程序

c 复制代码
[program:giftpanel]
#指定进程的工作目录
directory=/opt/gs/giftpanel/
#管理的进程的启动命令
command=/opt/gs/giftpanel/gift-panel  -DserviceCenter=ip -Dnamespace=gs-test -DserverPort=9082
#启动的进程数量	
numprocs=1		
#如果设置为 "true",则在 Supervisor 启动时会自动启动该进程。
autostart=true	
#重试次数
startretries=3	
#是否应自动重新启动该进程
autorestart=true	
#"redirect_stderr" 参数指定了是否将进程的标准错误重定向到标准输出文件中。如果设置为 "false",则标准错误将不会被重定向到标准输出文件中。
redirect_stderr=false
#log目录	
stdout_logfile=/data/supervisorlogs/gs/giftpanel.log
#"stdout_logfile_maxbytes" 参数指定了标准输出日志文件的最大大小,一旦达到这个大小,日志文件将会被回滚。
stdout_logfile_maxbytes=50MB
#"stdout_logfile_backups" 参数指定要保留的标准输出日志文件的备份数量。当日志文件达到指定数量时,最旧的备份将被删除
stdout_logfile_backups=10
#err log目录
stderr_logfile=/data/supervisorlogs/gs/err/giftpanel.err.log
#"stderr_logfile_maxbytes" 参数指定了标准错误输出日志文件的最大大小,一旦达到这个大小,日志文件将会被回滚
stderr_logfile_maxbytes=10MB  

[program:recharge]
command=/usr/lib/jvm/java-1.8.0/bin/java -jar -server -Xms512M -Xmx2048M  -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/gs/recharge/heapdump.hprof -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/data/gs/recharge/gc.log -DserverId=500 -DserviceCenter=ip  -Dnamespace=gs-test -DserverPort=9090 /opt/gs/recharge/recharge-1.0-SNAPSHOT-gs.jar
numprocs=1
autostart=true
startretries=3
autorestart=true
redirect_stderr=false
stdout_logfile=/opt/supervisorlogs/recharge.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=/opt/supervisorlogs/recharge.log
stderr_logfile_maxbytes=10MB


#如果需要配置分组 后面添加配置
[group:gs]
programs=giftpanel,recharge

5、启动

第一次配置需要重启supervisord

c 复制代码
systemctl start supervisord.service

之后添加子配置(*.ini)文件 只需要update即可

c 复制代码
supervisorctl update

6,1启动项目未分组情况下

c 复制代码
重启所有
supervisorctl restart all
supervisorctl restart recharge
supervisorctl restart giftpanel

停止所有
supervisorctl stop all
supervisorctl stop giftpanel
supervisorctl stop recharge

6,2启动项目分组情况下

c 复制代码
重启所有
supervisorctl restart gs:*
重启
supervisorctl restart gs:recharge
supervisorctl restart gs:giftpanel

停止所有
supervisorctl stop gs:*
停止
supervisorctl stop gs:giftpanel
supervisorctl stop gs:recharge

查看log

tail -f /data/supervisorlogs/gs/giftpanel.log

相关推荐
nita张10 小时前
2026年2月战略定位公司案例分享
大数据·人工智能·python
破晓之翼10 小时前
金蝶EAS OpenAPI 开发说明文档
java·经验分享·其他
空空潍10 小时前
Redis点评实战篇-关注推送
java·数据库·redis·缓存
季明洵10 小时前
Java实现循环队列、栈实现队列、队列实现栈
java·数据结构·算法··队列
一 乐11 小时前
英语学习平台系统|基于springboot + vue英语学习平台系统(源码+数据库+文档)
java·vue.js·spring boot·学习·论文·毕设·英语学习平台系统
无心水19 小时前
【任务调度:数据库锁 + 线程池实战】3、 从 SELECT 到 UPDATE:深入理解 SKIP LOCKED 的锁机制与隔离级别
java·分布式·科技·spring·架构
清水白石00819 小时前
隔离的艺术:用 `unittest.mock` 驯服外部依赖,让测试真正可控
python
编程小白gogogo19 小时前
苍穹外卖图片不显示解决教程
java·spring boot
舟舟亢亢19 小时前
算法总结——二叉树【hot100】(上)
java·开发语言·算法
码农小韩19 小时前
AIAgent应用开发——大模型理论基础与应用(五)
人工智能·python·提示词工程·aiagent