广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解supervisor使用教程
  • 369
分享到

详解supervisor使用教程

详解教程supervisor 2022-06-04 19:06:26 369人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

A Process Control System 使用b/s架构、运行在类Unix系统上一个进程监控管理系统它可以使进程以daemon方式运行,并且一直监控进程,在意外退出时能自动重启进程。 安装 Supe

A Process Control System 使用b/s架构、运行在类Unix系统上一个进程监控管理系统它可以使进程以daemon方式运行,并且一直监控进程,在意外退出时能自动重启进程。

安装

Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。
? sudo pip install supervisor
? sudo easy_install supervisor

pip的安装请参考 python自动安装pip

初识

安装完成后系统会增加几个命令

supervisord 用于启动supervisor服务。

supervisorctl 用于管理supervisor服务,管理使用supervisor启动的进程。

安装好supervisor后需要手动的生成配置文件。

echo_supervisord_conf | sudo tee /etc/supervisord.conf
supervisor默认读取的配置文件为/etc/supervisord.conf,建议将配置文件放在此位置。

我们先简单的查看一下 supervisord.conf,配置文件格式和ini格式配置文件相同,由节、键、值组成,配置文件注释为。

[unix_Http_server]

此节是配置连接supervisord的sock的文件,包括sock文件路径,用户认证。使用supervisorctl命令进行管理进程时,使用的就是此sock文件。默认保持开启,如将此项关闭 [inet_http_server] 则无法使用。 [inet_http_server]
此节配置supervisor的WEB管理界面,配置监听的地址和端口,已经用户认证。默认为关闭状态。如需开启则将此节注释去掉,然后修改相应的键值。 [supervisord]

此节为配置supervisor服务参数,例如日志,日志大小等一些参数。 [supervisorctl]

用于配置supervisorctl管理程序参数,例如sock文件路径,需要和[unix_http_server]相同。

[include]此节作用为包含其他配置文件,本文建议开启此项,包含额外的配置文件,将需要管理的进程配置写入到额外的配置文件,不需要经常编辑主配置文件,保证安全性。修改代码为


[include]
files = /etc/supervisor.d/*.conf

读取/etc/supervisor.d/文件夹下所有后缀为conf的文件。

第一步配置第一个使用supervisord管理的程序

我们使用 Python2.7 来作为演示,使用Simplehttpserver模块方便快速的启动一个http server。

1,创建配置文件 /etc/supervisor.d/test1.conf,写入一下内容


[program:simplehttpserver]
command=/usr/bin/env python2.7 -m SimpleHTTPServer 20080

查看图片

这是一个最简单的例子,第一行指定当前配置的程序名称。第二行程序运行命令(20080 为 http server端口号)。

2,第一个程序已经配置好,接下来就可以启动supervisord来查看一下效果。

输入命令 sudo supervisord 即可启动服务。

很多机器会打印出几行信息,这并不代表程序出错,意思是


“supervisord 是使用root身份来启动的,读取默认位置的配置文件,如果需要读取其他位置配置文件请使用 -c 参数”

查看图片

3,现在使用ps -ef | grep python来检查一下刚才配置的程序是否已经启动。到此为止我们的第一步已经完成。

查看图片

详细配置


[program:theprogramname]
command=/bin/cat    ; 程序运行命令,建议使用绝对路径。
process_name=%(program_name)s ; 程序名称,可用的变量有 `group_name`, `host_node_name`, `process_num`, `program_name`, `here`(配置文件目录)。 一般程序需要运行多个副本的情况会使用。后面会有例子。
numprocs=1     ; 程序运行的副本个数,默认为1,如果值大于1,则`process_name` 必须包含 `%(process_num)s`
numprocs_start=0    ; `%(process_num)s`起始数字,默认为0
00=/tmp    ; 程序运行的所在目录,相当于先cd到指定目录,然后运行程序。
umask=022      ; umask for process (default None)
priority=999     ; 程序操作的的优先级,例如在start all/stop all,高优先级的程序会先关闭和重启。
autostart=true    ; 在supervisord启动时自动启动,默认为true
startsecs=1     ; 程序启动前等待时间等待时间。默认为1。
startretries=3    ; 尝试重启最大次数。默认为3。
autorestart=unexpected  ; 是否自动重启,可选参数为 false, unexpected, true。如果为false则不自动重启,如果为unexpected表示如果程序退出信号不在 `exitcodes` 中,则自动重启。默认为unexpected
exitcodes=0,2     ; 程序退出码。配合`autorestart`使用。默认为 0,2
stopsignal=QUIT    ; 杀死进程是发送的信号,默认为TREM。
stopwaitsecs=10    ; 发送SIGKILL信号前最大等待时间。默认为10。
user       ; 以指定用户身份启动程序。默认为当前用户。
stopasgroup=false    ; 是否向子进程发送停止信号,这对于flask的debug模式很有用处,如果设置为true,则不向子进程发送停止信号。默认为false
killasgroup=false    ; 是否向子进程发送kill信号,默认为false
redirect_stderr=false   ; 将错误输出定向到标准输出,默认为false
stdout_logfile=/a/path  ; 标准输出日志路径,可选参数为 `自定义` `AUTO` `NONE`,`自定义`将日志写到自定义路径,可用的变量有`group_name`, `host_node_name`, `process_num`, `program_name`, `here`(配置文件目录);`NONE`不创建日志;`AUTO` 又supervisord自动选择路径,并且当supervisord服务重新启动时原来自动创建的日志以及日志的备份文件会被删除。默认为AUTO
stdout_logfile_maxbytes=1MB ; 标准输出日志单个文件最大大小,如果超过指定大小会将日志文件备份,可用的单位 KB MB GB。如果设置为0则表示不限制文件大小。默认为50MB
stdout_logfile_backups=10  ; 标准输出日志文件最大备份数。默认为10
stdout_capture_maxbytes=1MB ; 当进程处于“stdout capture mode”模式下写入到FIFO队列最大字节数,可用单位 KB MB GB。默认为0,详细说明见[capture-mode](http://supervisord.org/logging.html#capture-mode)
stdout_events_enabled=false ; 
        ;以下配置项配置错误输出的日志参数。和上面标准输出配置相同。
stderr_logfile=/a/path  ;
stderr_logfile_maxbytes=1MB ;
stderr_logfile_backups=10  ;
stderr_capture_maxbytes=1MB ;
stderr_events_enabled=false ;
environment=A="1",B="2"  ; 环境变量设置,可用的变量有 `group_name`, `host_node_name`, `process_num`, `program_name`, `here`。 默认为空。
serverurl=AUTO    ; override serverurl computation (childutils)

必要参数只有 command,其他未可选参数。 [program:x] 自定义的程序名不能重复 配置示例管理tornado应用

需要启动4个进程,分别监听四个连续端口(20081 ? 20084)。

将错误输出定向到标准输出,每个端口标准输出写入到不同文件中,单个文件最大50MB,最多保存3个备份。

启动前等待3秒。

supervisord启动时自动启动。程序运行出错自动重启,最大尝试重启次数3次。


[program:tornado-test]
command=/usr/bin/env python2.7 /home/user/tornado-test.py --port=%(process_num)s
process_name=%(program_name)s_port=%(process_num)s
numprocs=4
numprocs_start=20081
redirect_stderr=true
stdout_logfile=/tmp/tornado-test-%(process_num)s.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=3
autorestart=true
startsecs=3
startretries=3

管理Nginx

nginx默认运行状态是后台运行程序。supervisord不能管理此类程序需要,需要修改nginx主配置文件。

在nginx最外层加入daemon off;

查看图片

最简单的配置。


[program:nginx]
command=/usr/sbin/nginx ;建议使用绝对路径。

supervisorctl

supervisor进程管理工具,可以方便启动停止进程,查看程序日志,重新载入配置文件。

如果supervisord配置文件不再默认位置,使用supervisorctl工具时需要指定配置文件路径 supervisordctl -c 配置文件路径

常用命令

supervisordctl status 查看进程运行状态 supervisordctl start 进程名 启动进程 supervisordctl stop 进程名 关闭进程 supervisordctl restart 进程名 重启进程 supervisordctl update 重新载入配置文件 supervisordctl shutdown 关闭supervisord supervisordctl clear 进程名 清空进程日志 supervisordctl 进入到交互模式下。使用help查看所有命令。

start stop restart + all 表示启动,关闭,重启所有进程。

如果一个进程启动了多个副本,例如上文tornado-test。

关闭所有副本

查看图片

--结束END--

本文标题: 详解supervisor使用教程

本文链接: https://www.lsjlt.com/news/15952.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解supervisor使用教程
    A Process Control System 使用b/s架构、运行在类Unix系统上一个进程监控管理系统它可以使进程以daemon方式运行,并且一直监控进程,在意外退出时能自动重启进程。 安装 Supe...
    99+
    2022-06-04
    详解 教程 supervisor
  • 在python3中使用Supervisor的详细教程
    目录supervisor介绍安装supervisor设置环境变量配置supervisor管理一个进程supervisor配置文件详解启动supervisor有时候kill进程之后需要...
    99+
    2022-11-13
  • .Net Core 进程守护之Supervisor使用详解
    目录介绍supervisor1、执行下列命令安装supervisor2、安装完成之后,我们到配置目录去添加两个配置文件 3、启动Supervisor4、Supervisor...
    99+
    2022-11-13
  • Python进程管理神器Supervisor详解
    目录一、简介二、安装三、创建配置文件四、初试五、Web 界面附录:supervisorctl 常用命令一、简介 Supervisor 是一款 Python 开发的进程管理系统,允许用...
    99+
    2022-11-11
  • 利用Supervisor管理Redis进程的方法教程
    前言 Supervisor 是一个用 Python 实现的进程管理工具,可以很方便地启动,关闭,重启,查看,以及监控进程,当进程由于某种原因崩溃或者被误杀后,可以自动重启并发送事件通知。Supervisor...
    99+
    2022-06-04
    进程 方法 教程
  • Android Notification使用教程详解
    目录前言正文一、Android中通知的变化1. Android 4.1,API 162. Android 4.4,API 19 和 203. Android 5.0,API 214....
    99+
    2022-11-13
  • 详解MySQL Workbench使用教程
    MySQL Workbench 是一款专为 MySQL 设计的集成化桌面软件,也是下一代的可视化数据库设计、管理的工具,它同时有开源和商业化两个版本。该软件支持 Windows 和 Linux 系统,可以从 http...
    99+
    2022-05-30
    MySQL Workbench
  • CobaltStrike使用教程详解(基础)
    声明:本文仅限学习研究讨论,切忌做非法乱纪之事! 大家好,今天简单来聊聊CobaltStrike,这是我们后渗透阶段必不可少的神器。 Cobalt Strike 是一款流行的渗透测试工具,广泛用于红队操作和渗透测试。它由Raphael Mu...
    99+
    2023-09-13
    php 开发语言
  • @FeignClient使用详细教程(图解)
    @FeignClient使用详细教程图解 作用@FeignClient标签的常用属性使用流程通俗解释可以把它当成一个spring Bean 可以直接当成一个Service 给@FeignC...
    99+
    2023-10-12
    java spring
  • Reactimmer与ReduxToolkit使用教程详解
    目录1. immer1.1 setState结合immer使用1.2 useState结合immer使用1.3 immer和redux集合2. Redux Toolkit1. imm...
    99+
    2022-11-13
    React immer React Redux Toolkit
  • java中TestNG使用教程详解
    目录一、TestNG介绍二、TestNG安装(基于eclipse+maven)三、TestNG基本使用和运行1、直接运行:2、xml方式运行四、注解说明五、TestNG断言六、Tes...
    99+
    2022-11-12
  • CocoaPods1.9.0 安装使用教程详解
    CocoaPods是什么 CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是Coco...
    99+
    2022-05-27
    CocoaPods1.9.0 安装 使用
  • Golang接口使用教程详解
    目录前言一、概述二、接口类型2.1 接口的定义2.2 实现接口的条件2.3 为什么需要接口2.4 接口类型变量三、值接收者和指针接收者3.1 值接收者实现接口3.2 指针接收者实现接...
    99+
    2022-11-11
  • PythonBeautifulSoup模块使用教程详解
    目录一、模块简介二、方法利用1、引入模块2、几个简单的浏览结构化数据的方法三、具体利用1、获取拥有指定属性的标签2、获取标签的属性值3、获取标签中的内容4、stripped_stri...
    99+
    2023-02-24
    Python Beautiful Soup Python Beautiful Soup模块
  • 使用supervisor监控mha masterha_manager进程
    我们在用mha自带的masterha_manager脚本做mysql主库故障自动切换时,需要考虑如何让masterha_manager监控进程一直处于正常运行的状态。而supervisor可以很好地解决这个...
    99+
    2022-10-18
  • C#中类的使用教程详解
    目录实例化类成员访问赋值方法方法调用方法重载在对类访问使用时,常用到的有访问类的成员、方法。 实例化 在对类进行访问时,需要将类进行实例化。并产生一个对象。可以使用关键字new来实现...
    99+
    2022-11-13
  • 详解Vuex中getters的使用教程
    目录简介说明官网getters概述说明来源用法示例测试简介 说明 本文用示例介绍Vuex的五大核心之一:getters。 官网 Getter | Vuex API 参考 | Vuex...
    99+
    2022-11-13
  • Vuex中actions的使用教程详解
    目录简介说明官网actions概述说明特点用法示例测试简介 说明 本文用示例介绍Vuex的五大核心之一:actions。 官网 Action | Vuex API 参考 | Vuex...
    99+
    2022-11-13
  • Navicat for MySQL的使用教程详解
    首先要下载安装Navicat for MySQL,建议支持正版,也可以在百度上下载破解版的也可以用。 推荐: Navicat for MySQL 15注册激活详细教程 Navicat Premium 15 永久破解激...
    99+
    2022-05-29
    Navicat for MySQL Navicat for MySQL使用
  • 详解MybatisGenerator的具体使用教程
    目录1、相关文件2、使用方法Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Gen...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作