原文链接:https://www.jianshu.com/p/0226b7c59ae2

supervisor

supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中就好了。此时被管理进程被视为supervisor的子进程,若该子进程异常中断,则父进程可以准确的获取子进程异常中断的信息,通过在配置文件中设置autostart=ture,可以实现对异常中断的子进程的自动重启。


安装supervisor

  1. $ sudo apt-get install supervisor

配置文件

安装完supervisor后,输入以下命令可得到配置文件:

  1. $ echo_supervisord_conf

或者:

  1. $ cat /etc/supervisord/supervisord.conf

配置文件如下(分号;表示注释):

  1. ; supervisor config file
  2. [unix_http_server]
  3. file=/var/run/supervisor.sock ; (the path to the socket file)
  4. chmod=0700 ; sockef file mode (default 0700)
  5. [supervisord]
  6. logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
  7. pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  8. childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
  9. ; the below section must remain in the config file for RPC
  10. ; (supervisorctl/web interface) to work, additional interfaces may be
  11. ; added by defining them in separate rpcinterface: sections
  12. [rpcinterface:supervisor]
  13. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  14. [supervisorctl]
  15. serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
  16. ; The [include] section can just contain the "files" setting. This
  17. ; setting can list multiple files (separated by whitespace or
  18. ; newlines). It can also contain wildcards. The filenames are
  19. ; interpreted as relative to this file. Included files *cannot*
  20. ; include files themselves.
  21. [include]
  22. files = /etc/supervisor/conf.d/*.conf

以上配置文件用到几个部分:

  • [unix_http_server]:这部分设置HTTP服务器监听的UNIX domain socket

    • file: 指向UNIX domain socket,即file=/var/run/supervisor.sock
    • chmod:启动时改变supervisor.sock的权限
  • [supervisord]:与supervisord有关的全局配置需要在这部分设置
    • logfile: 指向记录supervisord进程的log文件
    • pidfile:pidfile保存子进程的路径
    • childlogdir:子进程log目录设为AUTO的log目录
  • [supervisorctl]:
    • serverurl:进入supervisord的URL, 对于UNIX domain sockets, 应设为 unix:///absolute/path/to/file.sock
  • [include]:如果配置文件包含该部分,则该部分必须包含一个files键:
    • files:包含一个或多个文件,这里包含了/etc/supervisor/conf.d/目录下所有的.conf文件,可以在该目录下增加我们自己的配置文件,在该配置文件中增加[program:x]部分,用来运行我们自己的程序,如下:
  • [program:x]:配置文件必须包括至少一个program,x是program名称,必须写上,不能为空
    • command:包含一个命令,当这个program启动时执行
    • directory:执行子进程时supervisord暂时切换到该目录
    • user:账户名
    • startsecs:进程从STARING状态转换到RUNNING状态program所需要保持运行的时间(单位:秒)
    • redirect_stderr:如果是true,则进程的stderr输出被发送回其stdout文件描述符上的supervisord
    • stdout_logfile:将进程stdout输出到指定文件
    • stdout_logfile_maxbytes:stdout_logfile指定日志文件最大字节数,默认为50MB,可以加KB、MB或GB等单位
    • stdout_logfile_backups:要保存的stdout_logfile备份的数量

示例如下,在目录/etc/supervisor/conf.d/下创建awesome.conf,并加入:

  1. ;/etc/supervisor/conf.d/awesome.conf
  2. [program:awesome]
  3. command = /usr/bin/env python3 /srv/awesome/www/app.py
  4. directory = /srv/awesome/www
  5. user = www-data
  6. startsecs = 3
  7. redirect_stderr = true
  8. stdout_logfile_maxbytes = 50MB
  9. stdout_logfile_backups = 10
  10. stdout_logfile = /srv/awesome/log/app.log

配置完后,先进入/srv/awesome/目录下创建log目录,之后启动supervisor:

  1. $ sudo supervisord -c supervisor.conf

supervisor基本命令(后四个命令可以省略“-c supervisor.conf”):

  1. supervisord -c supervisor.conf 通过配置文件启动supervisor
  2. supervisorctl -c supervisor.conf status 查看状态
  3. supervisorctl -c supervisor.conf reload 重新载入配置文件
  4. supervisorctl -c supervisor.conf start [all]|[x] 启动所有/指定的程序进程
  5. supervisorctl -c supervisor.conf stop [all]|[x] 关闭所有/指定的程序进程

执行服务(运行app.py):

  1. $ sudo supervisorctl start awesome

如果supervisor遇到错误,可以在/var/log/supervisor/supervisord.log中查看日志;

如果app运行出现问题,可以在/srv/awesome/log/app.log中查看日志。

综合应用链接

作者:涵仔睡觉
链接:https://www.jianshu.com/p/0226b7c59ae2
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

【收藏】Supervisor的作用与配置的更多相关文章

  1. Supervisor的作用与配置

    supervisor supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到super ...

  2. 转: Linux --- Supervisor的作用与配置

    supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中 ...

  3. SUPERVISOR进程管理器配置指南

    SUPERVISOR进程管理器配置指南1. supervisor简介1.1. 官网http://supervisord.org/ 1.2. 介绍Supervisor是一个进程控制系统. 它是一个C/S ...

  4. Supervisor 的安装与配置教程

    简介 Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemo ...

  5. Supervisor重新加载配置

    Supervisor重新加载配置启动新的进程 liaojie 发布于 1年前,共有 0 条评论 一.添加好配置文件后 二.更新新的配置到supervisord supervisorctl update ...

  6. supervisor管理进程工具配置

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  7. Linux Supervisor 守护进程基本配置

    supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ...

  8. Ubuntu14中supervisor的安装及配置

    supervisor是一款很好用的进程管理工具,其命令也很简单,其安装过程如下: Ubuntu14: 首先保证本地的Python环境是OK的,并且已经安装supervisor包,如果没有安装可以用ea ...

  9. centos 下Supervisor 守护进程基本配置

    supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ...

随机推荐

  1. gRPC创建Java RPC服务

    1.说明 本文介绍使用gRPC创建Java版本的RPC服务, 包括通过.proto文件生成Java代码的方法, 以及服务端和客户端代码使用示例. 2.创建生成代码工程 创建Maven工程,grpc-c ...

  2. SpringBoot 中拦截器的简介及使用方式

    拦截器简介 拦截器通常通过动态代理的方式来执行. 拦截器的生命周期由IoC容器管理,可以通过注入等方式来获取其他Bean的实例,使用更方便. 拦截器配置使用方式 实现拦截器接口: import jav ...

  3. 初识python: random 模块

    random 顾名思义,就是取 随机数,需要导入random模块. import random 1.随机获取一个0到1之间的小数(不含首尾) print(random.random()) 2.随机获取 ...

  4. float类型数据精度问题:12.0f-11.9f=0.10000038,"减不尽"为什么?

    现在我们就详细剖析一下浮点型运算为什么会造成精度丢失? 1.小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1)  十进制整数如何转化为二进制数 算法很简单.举个例子,11表示成二进制数: 1 ...

  5. 创建react开发环境

    准备工作 1.下载node.js(http://nodejs.cn/download/)推荐下载长期支持的版本 2.下载cnpm(https://jingyan.baidu.com/article/9 ...

  6. 编写Hive的UDF(查询平台数据同时向mysql添加数据)

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812629187518530052/ 可能会有一些截图中会有错误提示,是因为本地的包一直包下载有问题,截完图已经下 ...

  7. Hadoop的Shuffle阶段

    原文: https://www.toutiao.com/i6764683672772674062/ 在进入Map之前,首先会将数据从HDFS中读取,进行处理,按照字节偏移量这种之前说的形式处理为K,V ...

  8. 微信小程序输入框上移问题解决

    微信小程序的输入框在上面还好,如果不是,在聚焦的时候页面就会上移,上方的页面信息会看不到,影响用户操作 在这里可以手动设置并获取输入框的高度来解决 这种方式虽然有的机子有点卡,但是已经算是比较完美的解 ...

  9. Maven插件开发教程

    Maven是一个一个优秀的项目管理开源框架,其插件机制为其功能扩展提供了非常大的便捷性.大多数情况下,我们不需要自己开发Maven插件,因为Maven本身提供了很多便捷的官方插件.但是对于某些特殊场景 ...

  10. 最新RabbitMQ安装指南2021.07

    一.RabbitMQ入门及安装 1.入门及安装 01 概述 简单概述: RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消 ...