本篇文章属于转载,copy自这三篇文章,其中copy最多的是第三篇文章,我认为这篇讲的非常的详尽,解决了我的很多疑问
Supervisor重新加载配置启动新的进程
关闭 Supervisor 进程
使用 Supervisor 来管理 Redis 进程
一、添加好配置文件
supervisord -c /etc/supervisord.conf
二、更新新的配置到supervisord
supervisorctl update
三、重新启动配置中的所有程序
supervisorctl reload
四、启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name
五、查看正在守候的进程
supervisorctl
六、停止某一进程 (program_name=你配置中写的程序名称)
pervisorctl stop program_name
七、重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl restart program_name
八、停止全部进程
supervisorctl stop all
注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。
停止 supervisord
supervisorctl shutdown
Supervisor 包括以下四个组件。
supervisord
服务端程序,主要功能是启动 supervisord 服务及其管理的子进程,记录日志,重启崩溃的子进程,等。
supervisorctl
命令行客户端程序,它提供一个类似 shell 的接口,通过 UNIX 域套接字或者 TCP 套接字并使用 XML_RPC 协议与 supervisord 进程进行数据通信。它的主要功能是管理(启动,关闭,重启,查看状态)子进程。
Web Server
实现在界面上管理进程,还能查看进程日志和清除日志。
XML-RPC 接口
可以通过 XML_RPC 协议对 supervisord 进行远程管理,达到和 supervisorctl 以及 Web Server 一样的管理功能
————————————————
版权声明:本文为CSDN博主「haozlee」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lihao21/article/details/77689790
我们挑几个重要的进程状态来说明。
running:进程处于运行状态
starting:Supervisor 收到启动请求后,进程处于正在启动过程中
stopped:进程处于关闭状态
stopping:Supervisor 收到关闭请求后,进程处于正在关闭过程中
backoff:进程进入 starting 状态后,由于马上就退出导致没能进入 running 状态
fatal:进程没有正常启动
exited:进程从 running 状态退出
1. 为了将 Supervisor 的配置放置到独立的目录中,我们先创建目录:
cd /etc
mkdir supervisor
接着,可以继续使用echo_supervisord_conf命令,将 Supervisor 样例配置重定向输出到文件文件中:
echo_supervisord_conf > /etc/supervisor/supervisord.conf
这样,我们便生成了 Supervisor 的主配置文件supervisord.conf。
为了将 Supervisor 管理的进程配置与主配置文件区分开来,我们创建独立的目录来存放进程配置。
cd /etc/supervisor
mkdir conf.d
然后,修改主配置文件 supervisord.conf,添加以下配置,将 conf.d 目录下的进程配置引入 Supervisor 管理:
[include]
files = ./conf.d/*.ini
2. 创建管理进程
为方便测试 Supervisor 的功能,我们编写以下 Python 脚本,并保存为 hello.py。
import time
import sys
while True:
print("hello\n")
sys.stdout.flush()
time.sleep(1)
3. 创建进程配置
为将 hello.py 脚本被 Supervisor 接管,我们在 /etc/supervisor/conf.d 目录创建其配置 hello.ini:
[program:hello]
command=python /home/lihao/codes/python/hello.py
stdout_logfile=/home/lihao/codes/python/hello.log
stderr_logfile=/home/lihao/codes/python/hello_error.log
command:运行进程使用的命令
stdout_logfile:指定标准输出文件
stderr_logfile:标准错误输出文件
需要指出的是,被 Supervisor 管理的进程,不能使用 daemon 模式,而必须在前台运行,否则会报错
4. 运行 supervisord
由于我们需要使用指定目录下的 Supervisor 主配置文件,在运行 Supervisord 时,需要使用-c参数来指定主配置文件的路径:
supervisord -c /etc/supervisor/supervisord.conf
Supervisor Web 管理界面
如果需要开启 Web 管理界面功能,需要在supervisord.conf配置中添加以下配置:
[inet_http_server]
port=*:9001
username=user
password=123
然后,打开浏览器,输入地址 http://127.0.0.1:9001,这时,会弹出输入框,要求输入用户名和密码(用户名:user,密码:123),便可以进入 Supervisor 提供的进程管理界面。