Supervisord是一个用Python实现的进程管理工具,可以很方便地启动、重启、关闭、查看进程(不仅仅是Python进程)。除了对单个进程的控制,它还可以同时操作多个进程。除此之外它还能监控进程,当进程由于某种原因崩溃或者误操作杀掉后,自动重启并发送事件通知。
特征
- 简单:Supervisord通过简单的INI风格的配置文件进行配置,易于学习。它提供了许多每个进程选项,使您的生活更轻松,如重新启动失败的进程和自动日志轮换
- 集中:Supervisord为您提供一个开始、停止和监控流程的地方。过程可以单独或分组控制。您可以配置Supervisor以提供本地或远程命令行和Web页面
- 高效:Supervisord通过fork/exec启动其子进程,子进程不在后台运行。操作系统在进程终止时立即发送信号给Supervisord,而不像一些依赖
- 拓展:Supervisord有一个简单的事件通知协议,用任何语言编写的程序都可以用来监视它,还有一个用于控制XML_RPC的接口,它还可以由Python开发者利用的扩展点构建
- 兼容:Supervisord可以工作在除Windows以外的任何地方,它在Linux、Mac OS X,Solaris和FreeBSD上进行了测试和支持。它完全用Python编写,因此安装不需要C编译器。
- 久经考验:虽然Supervisord今天非常积极的开发,但并不是新的软件。Supervisord已经存在多年,并在许多服务器上使用。
Supervisord组件
Supervisord包含如下4种组件:
- Supervisord:服务端程序,它的主要功能是启动Supervisord服务及其管理的子进程,记录日志、重启崩溃的进程等。
- Supervisorctl:命令行客户端程序,它提供一个类似Shell的接口,通过UNIX域套接字或者TCP/IP套接字使用XML_RPC协议与Supervisord进程进行数据通信。它的主要功能就是管理(启动、关闭、重启、查看状态等)子进程
- Web Server:实现了在界面上管理进程,还能查看进程日志和清除日志。Web Server其实是通过XML_RPC来实现的,可以向Supervisord请求数据。它配置在[inet_http_server]块里面。
- XML_RPC接口:可以通过XML_RPC协议对Web Server进行远程调用,达到和Supervisord以及Web Server一样的管理功能。
安装
apt-get install supervisor
Supervisor安装完成后,运行echo_supervisord_conf,将打印一个示例Supervisor配置文件到您的终端。
或者输出到指定文件