Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems.
组成
supervisord:
supervisor的服务端的名为supervisord。它负责在自己的调用中启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,记录其子进程stdout和stderr输出,以及生成和处理与子进程生命周期中的点相对应的“事件”。
服务端使用配置文件。这通常位于/etc/supervisord.conf中。此配置文件是“Windows-INI”样式配置文件。
supervisorctl:
supervisor的命令行客户端部分名为supervisorctl。它为supervisord提供的功能提供了类似shell的界面。从supervisorctl,用户可以连接到不同的supervisord进程(一次一个),获取由子进程控制的状态,停止和启动子进程,并获取supervisord的运行进程列表。
命令行客户端通过UNIX域套接字或Internet(TCP)套接字与服务器通信。客户端进程通常使用与服务器相同的配置文件,但其中包含[supervisorctl]部分的任何配置文件都可以使用。
也可以同web页面来查看和管理进程,需要激活配置文件中的[inet_http_server]部分,然后访问 http:localhost:9001 即可。
安装
可以在Linux Mac OS X Solaris FreeBSD UNIX等大部分平台运行,不能在windows平台运行,对python版本的要求,pyhton2需要在2.7以上,python3需要在3.4以上。
通过pip在线安装:
pip install supervisor
离线安装可以查看官网
启动supervisor之前需要添加配置文件,一般在 /etc/supervisord.conf 位置处。
启动
要启动 supervisord,只需要执行 supervisord 。可以添加其他的命令行选项(例如想读取配置文件启动 supervisord -c /etc/supervisord.conf )。如果要重启supervisord ,执行 kill -HUP pid,要强制关闭进程kill -9 pid。
要启动 supervisorctl,只需要执行 supervisorctl 。就进入了supervisorctl的命令行交互页面,常见的命令:
status
Get all process status info
pid
Get the PID of supervisord.
pid <name>
Get the PID of a single child process by name.
pid all
Get the PID of every child process, one per line.
reload
Restarts the remote supervisord
reread
Reload the daemon’s configuration files, without add/remove (no restarts)
stop <name>
Stop a process
stop <gname>:*
Stop all processes in a group
stop <name> <name>
Stop multiple processes or groups
stop all
Stop all processes
start <name>
Start a process
start <gname>:*
Start all processes in a group
start <name> <name>
Start multiple processes or groups
start all
Start all processes
restart <name>
Restart a process
restart <gname>:*
Restart all processes in a group
restart <name> <name>
Restart multiple processes or groups
restart all
Restart all processes
Note: restart does not reread config files. For that, see reread and update.
更多命令可以参考 http://supervisord.org/running.html
配置文件
Supervisor配置文件通常名为supervisord.conf。且 supervisord 和 supervisorctl 都会使用这个文件。
参考文档: