进程管理利器Supervisor--入门简介

目录

  • 概述
  • Supervisor是什么
  • Supervisor意图
  • Supervisor特性
  • Supervisor组件
  • 平台需求

概述

    项目运行须要后台运行,通常都是使用 nohup,可是nohup不能对后台进程监控和失败重启等高级功能,有木有更好的工具能够帮咱们作这些事呢,经过谷哥的绑住找到了一个满意答案就是Supervisorweb

转帖请注明出处:https://my.oschina.net/u/2342969/blog/2963930shell

Supervisor是什么

    Supervisor是一个进程管理系统(实际上是一个软件),它有一个可视化界面能够启动进程,查看进程状态,它容许用户监视和控制类unix操做系统上的许多进程。windows

    它与launchd、daemontools和runit等程序共享一些相同的目标。与某些程序不一样,它不打算做为init的替代程序“process id 1”运行。相反,它被用于控制与项目或客户相关的过程,而且在引导时像其余程序同样启动。浏览器

Supervisor意图

  • 简便

        rc.d脚本是流程初始化/自动启动/管理的一种很好的、最基本的形式,可是编写和维护它们可能会很麻烦。此外,rc.d脚本不能自动重启崩溃的进程,许多程序在崩溃时不能正确重启本身。Supervisor将进程做为子进程启动,而且能够配置为在崩溃时自动重启它们。它还能够自动配置为在本身的调用上启动进程。安全

  • 精准

        一般很难在UNIX上准确地得到进程的运行/中止状态。Pidfiles表现是不许确的。Supervisor以子进程的形式启动进程,所以它老是知道其子进程的真正运行/中止状态,而且能够方便地查看这些数据。服务器

  • 托管

        咱们不但愿或不须要完整的shell访问进程运行的机器。在底层TCP端口上侦听的进程一般须要做为根用户启动和从新启动(UNIX的一个错误特性)。一般状况下,容许普通用户中止或重启这样的进程是彻底能够的,可是为他们提供shell访问一般是不切实际的,而为他们提供根访问或sudo访问一般是不可能的。向他们解释为何会存在这个问题也是困难的。若是将Supervisor做为根用户启动,就有可能容许普通用户控制此类流程,而不须要向他们解释问题的复杂性。经过从一个简单的shell或web UI发出“stop”、“start”和“restart”命令,Supervisorctl容许对机器进行很是有限的访问,基本上容许用户查看进程状态并控制受监视控制的子进程。工具

  • 进程组

        Supervisor经过进程组管理进程,进程经常须要在组中启动和中止,甚至能够按“优先顺序”启动和中止。Supervisor容许您为进程分配优先级,并容许用户经过监控管理客户端发出“start all”和“restart all”等命令,这些命令按照预先分配的优先级顺序启动进程。此外,能够将流程分组为“流程组”,而且能够做为一个单元中止和启动一组逻辑相关的流程。学习

Supervisor特性

  • 简单

    Supervisor是经过一个简单的ini风格的配置文件来配置的,很容易学习。它提供了许多进程选项,使您的工做更容易,例如从新启动失败的进程和自动日志循环。测试

  • 一站式

    Supervisor提供了一个开始、中止和监视流程的控制台。进程能够单独控制,也能够分组控制。能够经过配置Supervisor提供本地或远程命令行和web界面。加密

  • 高效

    Supervisor经过fork/exec启动它的子进程,而不是守护。当进程终止时,操做系统当即向Supervisor发出信号,这与某些解决方案不一样,这些解决方案依赖于容易出错的的PID文件和按期轮询来重启失败的进程。

  • 可扩展

    Supervisor有一个简单的事件通知协议,用任何语言编写的程序均可以使用它来监视它,还有一个XML-RPC接口用于控制。它也能够由Python开发人员利用扩展点构建。

  • 兼容性

    Supervisor除了windows系统,其余系统都可以使用。它在Linux、Mac OS X、Solaris和FreeBSD上均获得了测试和支持。它彻底用Python编写,因此安装不须要C编译器。

  • 可靠

    虽然Supervisor在今天被很是积极的开发,可是它并非一个新的软件。Supervisor已经存在多年,而且已经在许多服务器上使用。

Supervisor组件

supervisord

    Supervisor服务部分叫作Supervisord。它负责本身调用时启动子程序,响应来自客户机的命令,从新启动崩溃或退出的子进程,记录子进程挂掉和崩溃的输出,并生成和处理与子进程生命周期中的点对应的“事件”。

    它使用了一个配置文件。配置文件一般位于/etc/supervision.conf中。这个配置文件是一个“Windows-INI”风格的配置文件。经过适当的文件系统权限保持该文件的安全性很是重要,由于它可能包含未加密的用户名和密码。

    通俗点讲就是Supervisor的处理器

supervisorctl

    supervisorctl是Supervisor命令行客户端.它提供了一个类shell的接口,用于管理Supervisor提供的特性.用户能够链接到不一样的监控器进程(一次一个),获取受控子进程的状态,中止和启动的子进程,以及监控器的运行进程列表。

    通俗点讲就是Supervisor的命令工具

Web Server

    若是配置中启动了这个模块,就能够经过浏览器访问具备与supervisorctl相似功能的web用户界面。在配置文件的[inet_http_server]部分开启,访问服务器URL(例如http://localhost:9001/),经过web接口查看和控制进程状态。

    通俗点讲就是一个可视化界面,能够在界面操做进程

XML-RPC Interface

    web UI基于XML-RPC接口服务,该接口可用于询问和控制Supervisor及其运行的程序

平台需求

    Supervisor通过测试,能够在Linux (Ubuntu 9.10)、Mac OS X(10.4/10.5/10.6)、Solaris (10 for Intel)和FreeBSD 6.1上运行。它在大多数UNIX系统上均可以很好地工做。可是他不能在windows平台下运行

    Supervisor可使用Python 2.4或更高版本,但不能在Python 3的任何版本下工做。

相关文章
相关标签/搜索