supervisor

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


安装supervisor

$ sudo apt-get install supervisor

配置文件

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

$ echo_supervisord_conf

或者:

$ cat /etc/supervisord/supervisord.conf

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

; supervisor config file[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700) [supervisord] logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) ; the below section must remain in the config file for RPC ; (supervisorctl/web interface) to work, additional interfaces may be ; added by defining them in separate rpcinterface: sections [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket ; The [include] section can just contain the "files" setting. This ; setting can list multiple files (separated by whitespace or ; newlines). It can also contain wildcards. The filenames are ; interpreted as relative to this file. Included files *cannot* ; include files themselves. [include] 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,并加入:

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

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

$ sudo supervisord -c supervisor.conf

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

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

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

$ sudo supervisorctl start awesome

如果supervisor遇到错误,可以在/var/log/supervisor/supervisord.log中查看日志;
如果app运行出现问题,可以在/srv/awesome/log/app.log中查看日志。

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

转载于:https://www.cnblogs.com/xiaozengzeng/p/10787167.html

Supervisor的作用与配置相关推荐

  1. STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置

    摘自:STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置 作者:自信且爱笑' 发布时间: 2021-05-01 12:08:32 网址:https://blog ...

  2. linux重新启动某一个项目,Linux运维知识之supervisor更改某项目配置后 需要重新启动才有效...

    本文主要向大家介绍了Linux运维知识之supervisor更改某项目配置后 需要重新启动才有效,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 在linux服务器上部署了nod ...

  3. nginx作用_nginx作用及其配置

    nginx nginx作用及其配置 拉勾IT课小编为大家分解 作用 1. 代理 2. 负载均衡 3. web缓存 配置 1. 全局块 2. events: nginx服务器或与用户的网络连接 3. h ...

  4. vlan的作用及配置命令

    vlan的作用以及配置命令 目录 vlan的作用以及配置命令 一.vlan基本知识 二.配置vlan的命令 1.创建vlan 2.为vlan配置IP地址 3.把vlan绑定到接口上去 4.查看vlan ...

  5. javaweb学习总结十七(web应用组织结构、web.xml作用以及配置虚拟主机搭建网站)

    一:web应用组织结构 1:web应用组成结构 2:安装web组成机构手动创建一个web应用程序目录 a:在webapps下创建目录web b:在web目录下创建html.jsp.css.js.WEB ...

  6. OpenSessionInViewFilter作用及配置

    http://smesoft.blog.51cto.com/2740835/878389 一.作用 Spring为我们解决Hibernate的Session的关闭与开启问题.  Hibernate 允 ...

  7. servlet和jsp页面过滤器Filter的作用及配置

    刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下,            过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...

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

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

  9. VLAN原理和配置,交换机创建vlan的多种方法、三种接口模式的作用和配置方法、Access、Trunk、Hybrid接口的特性以及配置方法和命令

    目录 VLAN的特点: 产生原因: 优点: 802.1Q帧 TAG TPID: PRI: CFI: VLAN ID: 端口类型: Access接口特性: 接收数据时: 发送数据时: Trunk接口特性 ...

  10. lib文件夹的作用和配置lib文件

    在学习JAVAWEB期间,犯了一个很低级的错误,就是不知道javaweb下的lib是干什么用的,所以在学习javaweb的时候没有建lib文件夹,导致老是报错. 那么javaweb下的lib文件夹到底 ...

最新文章

  1. maven工程指定web资源包,创建jsp文件
  2. matlab水力学工具箱,新浪潮水工设计软件
  3. 阿里云oss上传图片
  4. 程序猿爆笑选集(1)
  5. C#:foreach语句,yield语句
  6. SAP License:SAP 清帐函数示例
  7. 别再被三次握手和四次挥手所支配!把TCP这玩意儿给你掰开了说
  8. 概率论(基本概念术语)的理解
  9. 解决mysql不是内部或外部命令 菜鸟教程
  10. 破产问题 (The Bankruptcy Problem)
  11. 透过全球首个知识增强千亿大模型,看到中国AI差异化发展之路
  12. 谷歌浏览器清除dns缓存
  13. C. Anton and Fairy Tale
  14. 课程设计实验--火车票座位分配
  15. TPAMI 2022|华为诺亚最新视觉Transformer综述
  16. PXI-10024100KSps、24Bit数据采集模块
  17. aabbcc本质不同的排列数
  18. matlab对一组数据傅里叶变换,如何对一组数据进行离散傅里叶变换
  19. 面向广义的rl代理商
  20. word文档制作流程图,掌握方法了就很简单

热门文章

  1. 使用Eclipse远程调试
  2. SSh三大框架的作用
  3. 【记录】搭建本地wordpress全过程
  4. 【快速高斯模糊的实现】
  5. 智能优化算法:黏菌优化算法 - 附代码
  6. 专业书籍阅读-Earth System Science Data Resources
  7. 使用envi对图像进行对比度拉伸并保存
  8. matlab中目录的相关操作
  9. 实习成长之路:MySQL十一:为什么我的MySQL会“抖”一下?
  10. 实习踩坑之路:利用Java8新特性实现不同范型List之间的相互转换