supervisor系列:1、了解并安装supervisor

2023-11-09

supervisor系列:1、了解并安装supervisor


1. 前言

supervisor简单来说是用于类unix系统的进程管理系统,和我们之前接触的perp类似,但是supervisor是用python写的,需要python环境支持,因此可以在树莓派等板子上使用,不太适合更小的嵌入式Linux系统。

对于进程管理,我们可以简单理解为原本各个进程的后台运行和异常挂掉后的拉起统一由该进程管理系统来处理,在这样的进程管理框架下我们不需要再对各个进程开发守护进程以及进程监控脚本等,只需要配置到进程管理系统下即可。当然,不同的进程管理系统可能有一些特色,这里我们不过多讨论。

官网地址:http://supervisord.org/

接下来我们这里针对官网中的说明在Ubuntu上安装并总结。

2. supervisor概述

Supervisor 是一个客户端/服务器系统,允许其用户监视和控制类UNIX操作系统上的许多进程。它的灵感来自以下内容:

  • 便利性

    为每个单独的进程都写rc.d脚本是不方便的。rc.d脚本是进程初始化/自动启动/管理的一种最常见的形式,但是编写和维护他们是痛苦的。此外,rc.d脚本不能自动重新启动崩溃的进程,许多程序在崩溃时也不能正确地重新启动自己。supervisor将进程作为其子进程启动,并且可以在其崩溃后自动重启。还可以配置为在自己启动时调用进程。

  • 准确性

    在Unix上获取进程正确的启动/关闭状态通常很难。Pidfiles经常撒谎。supervisor以子进程的形式启动进程,因此它总是可以它的子进程的正确的启动/关闭状态并且可以方便的查询这些数据。

  • 授权

    需要控制进程状态的用户通常只需要这么做。他们不需要或不希望对运行进程的机器做全面的shell访问。监听“low”TCP端口的进程通常需要以root用户启动或者重启(一个Unix误功能)。通常情况下允许普通用户去停止或者重新启动这样的进程是完全没有问题的,但是向他们提供shell权限是不切实际的,并且向他们提供root权限或者sudo权限也是不可能的。向他们解释这个问题的原因也很困难。如果supervisor以root权限启动,就可以运行普通用户控制这些进程,而不需要向他们解释复杂的问题。supervisorctl运行对机器进行非常有限的访问,本质上允许用户查看进程状态并通过简单的shell或者网页用户界面发布停止、开启、重启指令来控制被supervisor控制的子进程。

  • 进程组

    进程通常需要子组中启动和停止,有时甚至按照优先级顺序执行。通常很难向让人们解释如何做到这一点。supervisor运行您为进程分配优先级,并且允许用户通过supervisorctl客户端发出命令,比如"start all"和"restart all",这将按照预先分配的优先级顺序启动它们。此外,流程可以分组为"process groups",一组逻辑相关的进程可以作为一个单元停止和启动。

3. 特点

  • 简单的

    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已经存在很多年了,并且已经在很多服务器上使用。

4. Supervisor组成

  • supervisord

    主管的服务部分被命名为supervisord。它负责在自己调用时启动子程序,响应来自客户机的命令,重新启动崩溃或退出的子进程,记录子进程的stdout和stderr输出,并生成和处理与子进程生命周期中各点对应的“事件”。

    服务进程使用一个配置文件,通常位于/etc/supervisor.conf中。这个配置文件是一个“Windows-INI”风格的配置文件。通过适当的文件系统权限确保该文件的安全非常重要,因为它可能包含未加密的用户名和密码。

  • supervisorctl

    管理器的命令行客户端部分命名为supervisorctl。它提供了一个shell式的接口来实现由supervisord提供的功能。从supervisorctl,用户可以连接到不同的supervisord进程(一次一个),获得子进程控制的状态,停止和启动子进程,并获得一个supervisord正在运行的进程列表。

    命令行客户端通过UNIX域套接字或internet (TCP)套接字与server进行通信。服务端可以断言客户端的用户在允许其执行命令之前应该提供身份验证凭据。客户端进程通常使用与服务端相同的配置文件,但是任何包含[supervisorctl]部分的配置文件都可以工作。

  • Web Server

    一个(稀疏的,简单的)web用户界面具有类似于supervisorctl的功能,可以通过浏览器访问,如果你针对一个互联网套接字启动supervisord。激活配置文件的[inet_http_server]部分后,通过web界面访问服务器URL(如http://localhost:9001/)来查看和控制进程状态。

  • XML-RPC Interface

    服务于网页用户界面的相同HTTP服务器提供XML-RPC接口,该接口可用于询问和控制管理程序及其运行。参见XML-RPC API文档。

5. 平台要求

Supervisor已经经过测试,已知可以在Linux (Ubuntu 18.04), Mac OS X (10.4/10.5/10.6), Solaris (10 for Intel)和FreeBSD 6.1上运行。它很可能在大多数UNIX系统上工作得很好。

Supervisor将不会在任何版本的Windows下运行。

Supervisor适用于Python 3 3.4或更高版本,以及Python 2 2.7版本。

6. 安装

6.1 有网络的系统下安装

  • 有pip

Supervisor可安装pip安装:

pip install supervisor

根据系统Python的权限,您可能需要是root用户才能使用pip成功安装Supervisor。

你也可以通过pip在virtualenv中安装supervisor。

  • 没有pip

如果您的系统没有安装pip,则需要下载Supervisor发行版并手动安装它。当前和以前的Supervisor版本可以从PyPi下载。解包后,运行python setup.py install。这需要上网。它将下载并安装Supervisor所依赖的所有发行版,并最终安装Supervisor本身。

注意:

根据系统Python的权限,您可能需要是根用户才能成功调用Python setup.py install

6.2 没有网络的系统下安装

如果您想要安装Supervisor的系统没有Internet访问权限,那么您需要进行略微不同的安装。因为pippython setup.py安装都依赖于互联网访问来执行相关软件的下载,所以除非安装了依赖项,否则两者都不能在没有互联网访问的机器上工作。若要安装到未联网的机器上,请在联网的机器上获取以下依赖项:

Setuptools(最新)来自https://pypi.org/pypi/setuptools/

将这些文件复制到可移动媒体中,并将它们放在目标机器上。按照指令将它们安装到目标机器上。这通常只是意味着解包每个文件并在解包目录中调用python setup.py install。最后,运行supervisor的python setup.py install

注意:

根据系统Python的权限,您可能需要是根用户才能为每个包成功调用Python setup.py install

6.3 安装分发包

一些Linux发行版提供了一个可以通过系统包管理器安装的Supervisor版本。这些包是由第三方制作的,而不是由Supervisor开发人员制作的,并且通常包含针对Supervisor的特定于发行版的更改。

使用发行版的包管理工具来检查可用性;例如,在Ubuntu上可以运行apt-cache show supervisor,在CentOS上可以运行yum info supervisor

Supervisor的分发包的一个特性是,它们通常将集成到分发的服务管理基础结构中,例如,当系统启动时,允许supervisor自动启动。

注意:

Supervisor的分发包可能会大大落后于官方发布给PyPI的Supervisor包。例如,Ubuntu 12.04(发布于2012年4月)提供了一个基于Supervisor 3.0a8(发布于2010年1月)的软件包。延迟通常是由给定发行版设置的软件发布策略引起的。

注意:

用户报告说Ubuntu 16.04的Supervisor发行包与以前的版本有不同的行为。在Ubuntu 10.04、12.04和14.04上,安装该包将把系统配置为在系统启动时启动supervisor。在Ubuntu 16.04上,这在最初的版本中并没有实现。这个包后来被修正了。更多信息请参见Ubuntu Bug #1594740。

6.4 创建一个配置文件

一旦Supervisor安装完成,运行echo_supervisord_conf。这将打印一个“示例”Supervisor配置文件到终端的标准输出。

看到文件回显到终端后,将命令重新调用为echo_supervisord_conf > /etc/supervisord.conf。如果您没有root访问权限,这将无法工作。

如果您没有root访问权限,或者您宁愿不放置supervisord.conf文件到/etc/supervisord.conf,您可以将其放置在当前目录中(echo_supervisord_conf > supervisord.conf)并使用-c标志启动supervisord,以指定配置文件的位置。

举个例子,supervisord -c supervisord.conf。在这种情况下,使用-c标志实际上是多余的,因为在搜索任何其他位置的文件之前,supervisord会在当前目录中搜索supervisord.conf,但它会工作。有关-c标志的更多信息,请参见Running Supervisor

一旦您的文件系统上有了一个配置文件,您就可以开始根据自己的喜好修改它。

总体上写一个简单的脚本即可:

#!/bin/bash

sudo -s
pip install supervisor
echo_supervisord_conf
echo_supervisord_conf > /etc/supervisor.conf
ps -ef | grep supervisor
supervisord -c /etc/supervisor.conf
ps -ef | grep supervisor

当然,前提是安装好了python和pip。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

supervisor系列:1、了解并安装supervisor 的相关文章

  • Supervisor 使用说明,轻松管理进程

    Supervisor 使用说明 xff0c 轻松管理进程 导读 要想在终端后台常驻进程 xff0c 首先想到的是在命令后加 amp 符号 xff0c 来达到隐藏程序在后台的目的 xff0c 尽管看起来进程已经在后台运行了 xff0c 实际上
  • python自己重启自己程序_Supervisor 让崩溃的程序自动重启

    Supervisor 介绍 Supervisor 是一个用 Python 写的进程管理工具 xff0c 可以很方便的用来启动 重启 关闭进程 不仅仅是 Python 进程 除了对单个进程的控制 xff0c 还可以同时启动 关闭多个进程 xf
  • Supervisor 之部署

    介绍 supervisor可以对进程进行监管 xff0c 当进程挂掉 xff0c 可以对进程进行重启 xff0c 不用编写额外的脚步进行控制 名词 supervisor xff1a 安装的软件的名称 supervisord xff1a 装好
  • supervisor搭建与配置

    supervisor 是管理程序进程启动和状态 xff0c 当程序进程死掉 xff0c supervisor会把这个程序进程重新拉起 python版本最低要2 7 pip install supervisor 就可以安装了 如果是pytho
  • linux系统--进程管理&计划任务

    kill 9 PID 强制关闭PID kill 1 PID 重启PID的进程 pgrep ssh 查询ssh所有的PID pkill ssh 关闭ssh服务 不需要查询ssh进程的PID 进程优先级 nice指定程序的运行和优先级 n的取值
  • Linux内核:进程管理——进程文件系统 /proc详解

    proc详解 xff1a 内容摘要 xff1a Linux系统上的 proc目录是一种文件系统 xff0c 即proc文件系统 Linux系统上的 proc目录是一种文件系统 xff0c 即proc文件系统 与其它常见的文件系统不同的是 x
  • Supervisor服务器进程监测

    服务器上的应用程序有时候会莫名其妙地挂掉 xff0c 如果我们经常去登录服务器看是不是程序挂了 xff0c 挂了再拉起 xff0c 那样是非常耗时和麻烦的事情 后来我们通过使用 supervisor 去守护启动 xff0c 实现方法如下 一
  • 树莓派 docker homeassistant supervisor安装

    仅供个人参考哦参考一下博主的教程 xff0c 顺便补充了点中间遇到的问题 Power Tea的个人空间 哔哩哔哩 bilibili 先换软件源 查看你的版本 如果是bullseye则不用修改后续换源的文件 lsb release a sud
  • supervisor托管配置nginx

    前言 阅读本文档前 请先了解如何安装配置supervisor和nginx 以下是相关学习文档 超全面 CentOS7 安装及配置supervisor CentOS 安装及配置nginx 配置 1 创建supervisor托管配置文件 详细如
  • supervisor系列:2、运行supervisor

    supervisor系列 2 运行supervisor 文章目录 supervisor系列 2 运行supervisor 1 添加一个程序 2 运行supervisord 2 1 supervisord命令行配置 3 运行superviso
  • Linux操作系统进程的状态和转换(五态模型)

    1 进程的状态和装换 1 1进程的三态模型 按进程在执行过程中的不同情况至少要定义三种状态 运行 running 态 进程占有处理器正在运行的状态 进程已获得CPU 其程序正在执行 在单处理机系统中 只有一个进程处于执行状态 在多处理机系统
  • 趣谈操作系统原理,存储管理之页式、段式、段页式存储

    一 概述 非连续分配管理方式允许一个程序分散地装入到不相邻的内存分区 根据分区的大小是否固定分为分页式存储管理方式和分段式存储管理方式 分页存储管理方式中 又根据运行作业时是否要把作业的所有页面都装入内存才能运行分为基本分页式存储管理方式和
  • centos7安装配置supervisor保姆教程

    介绍 Supervisor是一个进程管理工具 是由python语言编写 基于linux操作系统的一款服务器管理工具 用以监控服务器的运行 发现问题能立即自动预警及自动重启等功能 是一个客户 服务器系统 服务器端称为supervisord 管
  • Go操作supervisor xml rpc接口及注意事项

    Go操作supervisor xml rpc接口及注意事项 文章目录 Go操作supervisor xml rpc接口及注意事项 1 前言 2 管理web 3 go处理库 4 实时日志处理代码片段 1 前言 之前提到过目前我们的进程都是通过
  • 进程管理(十三)---进程调度基本原理

    1 为什么需要调度 进程调度的概念比较简单 我们假设在一个单核处理器的系统中 同一时刻只有一个进程可以拥有处理器资源 那么其他的进程只能在就绪队列中等待 等到处理器空闲之后才有计划获得处理器资源来运行 在这种场景下 操作系统就需要从众多的就
  • Linux的进程管理

    目录 1 概述 2 进程描述符 2 1 进程描述符的分配 2 2 进程描述符的存放 2 3 进程状态 2 4 进程上下文 2 5 进程家族树 3 进程的创建 4 进程的终结 5 线程的实现 1 概述 进程是执行期的代码 但是进程不止包括这样
  • supervisor系列:4、子进程

    supervisor系列 4 子进程 文章目录 supervisor系列 4 子进程 1 非后台运行的子进程 1 1 程序配置示例 1 1 1 Apache 2 2 6 1 1 2 Two Zope 2 X instances and on
  • Supervisor使用备忘

    为什么要用Supervisor 从这里说起 服务器端要将程序以daemon运行 其目的是摆脱控制终端的信号影响 以免进程退出 Daemon化流程 int daemonize pid t pid fork if pid 0 exit 0 if
  • Linux内核文件系统知识大总结

    1 文件系统特点 文件系统要有严格的组织形式 使得文件能够以块为单位进行存储 文件系统中也要有索引区 用来方便查找一个文件分成的多个块都存放在了什么位置 如果文件系统中有的文件是热点文件 近期经常被读取和写入 文件系统应该有缓存层 文件应该
  • Linux进程管理:deadline调度器

    一 概述 实时系统是这样的一种计算系统 当事件发生后 它必须在确定的时间范围内做出响应 在实时系统中 产生正确的结果不仅依赖于系统正确的逻辑动作 而且依赖于逻辑动作的时序 换句话说 当系统收到某个请求 会做出相应的动作以响应该请求 想要保证

随机推荐

  • 一些关于机器学习和统计方面值得阅读的书籍

    一些关于机器学习和统计方面值得阅读的书籍 一下著作都是一些经典的英文著作 不是崇洋媚外 大部分的知识都是由人老外提出并发展的 国内一些书籍质量实在不敢恭维 所以在初始的学习时 最好还是选择英文的著作 解除第一手资料 对于启发式的学习很有帮助
  • ubuntu 搭建hyperledger-fabric开发环境

    GO环境 建议方式2 版本较新 方式 sudo apt get install golang 方式 wget https storage googleapis com golang go1 9 linux amd64 tar gz sudo
  • 【R包安装】某个编辑包不存在,不存在叫‘xxx‘这个名字的程辑包

    一 问题 我在运行是python调用R包出现以下问题 不存在叫 mclust 这个名字的程辑包 二 解决 1 镜像网站 打开RStudio 在工具栏选择 Tools gt global option gt packages gt 选择中科大
  • Android Studio调整改变界面代码字体的大小

    Android Studio调整改变界面代码字体的大小 打开android studio 在菜单栏中 点击File 选择Setting 对界面代码字体大小更改 进入到设置窗口后 在左侧栏中找到Editor 点击小三角就能展开 找到Font
  • C# TCP通信以及报文格式和接收处理

    目前有一个小demo 模拟的是一台机子上的服务器和客户端的发送和接收消息 我打包上传 有兴趣的可以下载看看 网址是 Tcp通信 本机发送接收 https download csdn net download yuanyuanluoluo 1
  • NAVICAT 用新建查询导入数据的时候如何忽略错误继续执行

    NAVICAT 用新建查询导入数据的时候如何忽略错误继续执行 一 一次性导出查询记录 在这里插入图片描述 https img blog csdnimg cn 二 sql遇错继续执行 数据库右键 导入sql文件 选择忽略错误 点击确定
  • vue父组件调用子组件中的方法、值的几种方式

    1 ref 直接在父组件内部给子组件标签添加ref属性 然后通过ref属性来调用子组件的方法 父组件 Parent vue
  • 苹果应用商店上架流程

    上架过程分七个步骤 按步骤一步步来 仔细看这个流程 少走很多弯路 不用一步步去试错 新手也能快速掌握上架流程 1 创建APP身份证 App IDs 2 申请iOS发布证书 3 申请iOS发布描述文件 4 上传ios证书编译打包IPA 5 在
  • 关于Unity启动时间过长(启动黑屏时间长)的问题

    好吧 Unity启动确实比其他引擎生成的游戏包慢些 关键是你启动的时候还要等上一段时间才显示Splash那个logo图 最近项目有个蛋疼得需求 需要在启动界面加进度帧动画 我也是醉了 刚开始的思路 用Unity单独做个启动场景 让Splas
  • conda,anaconda,miniconda的区别

    可能从conda miniconda和anaconda三个名词来说用得最多比较熟悉的应该是anaconda吧 包办一切 帮我们安装好了很多包和环境 我们都喜欢用现成的东西 懒得自己捣鼓 最近刚好有项目需要 用了一下miniconda 才慢慢
  • Win10下 vc++6.0打开文件闪退解决

    Win10下vc 6 0闪退解决方法 网上下载一个filetool exe的启动程序 下载之后如图所示 打开这个文件 选择你要解压的路径 之后点击Unzip 之后出现一个FileTool的文件夹 在这里插入图片描述 用vc 6 0打开工作空
  • windows密码破解(哈希破解技术)

    一 windows密码与哈希 1 我们用于登录的windows密码 在windows系统中会进行加密 一般密码加密文件储存在c盘的windows system32 config目录下 文件名是SAM文件 在system目录下有两个非常重要的
  • web前端——常用的标签

    html概述 1 1html全称 html全称 Hyper Text Markup Language 超文本标记语言 对于不同的浏览器 对同一标记符可能会有不完全相同的解释 因而可能会有不同的显示效果 1 2 html语法结构
  • python关于TypeError: Required argument 'mat' (pos 2) not found错误解决方法

    这个错误提示意思是 没有找到要求的参数 即代码里的函数缺少必要的参数 下面举个显示图片的例子 import cv2 img cv2 imread data wiki png cv2 imshow img cv2 waitKey 0 运行时会
  • sqlserver:文件和文件组

    环境 window10 x64 专业版 sqlserver2014 参考 官网 文件和文件组体系结构 sql server 里的文件和文件组使用 SQL Server中数据库文件的存放方式 文件和文件组 SQL Server 文件和文件组
  • STM32 调试debug 常规使用

    STM32 调试debug 常规使用 前言 硬件 1 准备 软件 1 MDK配置debug 2 开始debug 前言 该讲解适用于快速使用debug 由于缩短篇幅有些未进行实验演示 请按照本文说明自行验证 如果知道调试器这个东西 直接跳到软
  • 详解美摄汽车图像及视频处理方案(三)

    时至今日 汽车已不再是简单的交通工具 而是成为了真正意义上的 第三生活空间 用户对于汽车的要求也不仅止于代步 对与汽车共处的时间已产生了更高期待 美摄汽车图像及视频处理方案 助力车企为用户带来更具想象力的玩法和多样化的服务 创造更具品质的驾
  • Intellij IDEA运行出现1099 is already in use解决办法

    在使用Intellij IDEA运行web项目时 出现 Error running Tomcat8 Address localhost 1099 is already in use 使其web项目无法运行 这说明1099端口被占用 一般为j
  • 【STM32】stm32工程所占内存大小的查看方法

    用keil打开一个工程 点击工程目录文件 如下的Template 拉到文件最后 最后的信息即为所占内存大小 Code Data 代码占用的空间大小 占用的空间为内部Flash RO Data 只读常量大小 const常量 define宏常量
  • supervisor系列:1、了解并安装supervisor

    supervisor系列 1 了解并安装supervisor 文章目录 supervisor系列 1 了解并安装supervisor 1 前言 2 supervisor概述 3 特点 4 Supervisor组成 5 平台要求 6 安装 6