supervisorctl - Serbipunk/notes GitHub Wiki
cheatsheet
sudo supervisorctl status
sudo supervisorctl update XXXX
sudo supervisorctl start|stop|restart XXXX
introduction
是一个 客户端/服务器 系统,允许类unix操作系统用户控制一系列进程。不是跟你吹,他下面几点真的很牛。
便捷
对每个单进行写rc.d
脚本,让人不便。然而,针对进程的 初始化
|自动启动
|管理
而言,rc.d
是最基本的配置(最大公约数),然而修改和维护很困难。
额外的,rc.d
无法在进程崩溃后重启。
supervisord
启动某进程,当作他的子进程,而且能配置,在崩掉后重启。可以在supervisord被召唤时启动。
准确
在UNIX系统,准确获得up/down状态是很困难的。pidfile经常不准。supervisord用子进程的方式启动进程,所以直降很容易检索到执行的up/down状态。
委托
用户仅仅需要控制任务状态,而不是把服务器做shell的游戏机玩。小TCP端口被root用户霸占(UINX里令人头疼的设计)。给小白用户一个启动开关是ok的,给他们耍命令行就要引发mmp了,给他们root权限更是玩火自焚。把这道理解释给用户,是件力气活。
如果supervisord被以root权限启动,则小白用户可以使用全部功能,而不用理解太多。
Supervisorctl
允许很少几样访问机器的方式,尤其允许用户看见并操控任务,在命令行及网页版,会看见 “stop”, “start”, “restart”的状态。
工艺组
流程通常需要成组地启动和停止,有时甚至需要按照“优先级顺序”进行。通常很难向人们解释如何执行此操作。Supervisor允许您为进程分配优先级,并允许用户通过supervisorctl客户端发出命令,如“全部启动”和“全部重新启动”,这会按预先指定的优先级顺序启动它们。此外,可以将进程分为“进程组”,并且可以将一组逻辑相关的进程作为一个单元停止和启动。
特征
简单
通过简单易懂的INI样式配置文件配置Supervisor。它提供了许多每个进程的选项,使您的生活更加轻松,例如重新启动失败的进程和自动日志轮换。
集中
主管为您提供了一个开始,停止和监视过程的地方。可以单独或成组控制过程。您可以配置Supervisor以提供本地或远程命令行和Web界面。
高效的
主管通过fork / exec启动其子进程,并且子进程不守护。进程终止时,操作系统会立即向Supervisor发送信号,这与某些依靠麻烦的PID文件和定期轮询来重新启动失败的进程的解决方案不同。
可扩展的
Supervisor具有一个简单的事件通知协议,该协议可以使用任何语言编写的程序对其进行监视, 并且具有用于控制的XML-RPC接口。它还使用扩展点构建,Python开发人员可以利用这些扩展点。
兼容
除Windows外,Supervisor几乎适用于所有其他方面。它已在Linux,Mac OS X,Solaris和FreeBSD上经过测试和支持。
它完全用Python编写,因此安装不需要C编译器。
久经考验
尽管Supervisor如今非常活跃,但它不是新软件。Supervisor已经存在了很多年,并且已经在许多服务器上使用。
主管组件
监督的
服务器主管的名字叫supervisor
。它负责自行调用启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,
记录其子进程stdout和stderr 输出以及生成和处理与子进程生存期中的点相对应的“事件”。
服务器进程使用配置文件。它通常位于/etc/supervisord.conf
中。
此配置文件是“ Windows-INI”样式的配置文件。
通过适当的文件系统权限来确保此文件的安全很重要,
因为它可能包含未加密的用户名
和密码
。
监督员
主管的命令行客户端名为 supervisorctl。
它提供了类似于shell的界面,可与supervisor提供的功能结合。 从 supervisorctl,用户可以连接到不同的 supervisord进程(一次一个),对,停止控制的子流程获得地位和启动的子进程,并获得运行的进程的列表supervisord。
命令行客户端通过UNIX域套接字或Internet(TCP)套接字与服务器对话。服务器可以断言客户端的用户应该在允许客户端执行命令之前出示身份验证凭据。客户端进程通常使用与服务器相同的配置文件,但是其中包含[supervisorctl]节的任何配置文件都可以使用。
网络服务器
一个Web用户界面 supervisorctl可以通过浏览器,如果你开始访问 supervisord对互联网插座。激活配置文件的[inet_http_server]部分后,请访问服务器URL(例如http:// localhost:9001 /)以通过Web界面查看和控制进程状态。
XML-RPC接口
服务于Web UI的同一HTTP服务器提供XML-RPC接口,该接口可用于询问和控制管理程序及其运行的程序。请参阅XML-RPC API文档。
http://supervisord.org/running.html