supervisord如何优雅的新加服务
前言
现有supervisord 的管理下已经有服务正在运行,如果想要不重启正常运行的服务,还新添加应用如何实现呢?
【建议查看官方文档中的各个action介绍,以免踩坑】
http://supervisord.org/running.html#adding-a-program
前提条件
新服务的.ini文件已经放到了/etc/supervisord.d/<新服务名>.ini
官方文档中action的操作,有以下几种方法
add 【推荐 ✅】
add […]
Activates any updates in config for process/group
supervisorctl add celery
update【推荐 ✅】
update(刷新现有的配置,新服务会被添加、不会重启现有运行服务)
Reload config and add/remove as necessary, and will restart affected programs
supervisorctl update
reload 【不推荐 ❌】
reload(重启supervisod,新服务会被添加、但现有运行的服务都会重启) - 可以,但很暴力【⚠️⚠️现有运行的服务会有影响】
Restarts the remote supervisord
supervisorctl reload
直接重启 supervisord 【不推荐 ❌】
或者暴力一点,直接重启整个服务也是可以读到新的应用【⚠️⚠️注意,现有运行的服务会有影响】
systemctl restart supervisord
其他的一些常用命令记录
remove <name> [...] -删除单个项目 如果【服务在运行无法删除,必须先stop】
Removes process/group from active config
[root@k8s-srv-node9 coredns]# supervisorctl remove coredns-test
coredns-test: removed process group
start <服务名>
start all
stop <服务名>
stop all
clear <服务名> | 注意此处清理的日志,必须是正在运行的服务,如果未运行则无法清理(其实原理supervisord就是找不着日志目录了)
clear all
restart <服务名>
restart all
update <服务名>
update all
pid
pid all
status
clear 日志清理,亲测有用