简介:

Supervisor 进程管理工具

一、安装

  1. shell > yum -y install python-pip
  2.  
  3. shell > pip install supervisor
  4.  
  5. # 这样就安装好了,注意:这货不支持 Python 、用 yum 安装也有问题

二、配置

  1. shell > echo_supervisord_conf > /etc/supervisord.conf
  2.  
  3. # 生成配置文件到指定位置,报错的时候卸载原来的包装这个 meld3==0.6.7 [ pkg_resources.DistributionNotFound: meld3>=0.6.5 ]
  4.  
  5. shell > grep -vP '^;|^$' /etc/supervisord.conf
  6.  
  7. [unix_http_server]
  8. file=/var/tmp/supervisor.sock ; .sock 存放位置
  9.  
  10. [supervisord]
  11. logfile=/var/log/supervisord.log ; .log 存放位置
  12. logfile_maxbytes=50MB ; 每个日志文件最大 50MB
  13. logfile_backups= ; 保留10个备份
  14. loglevel=info ; 日志级别,info,debug,warn,trace
  15. pidfile=/var/run/supervisord.pid ; .pid 存放位置
  16. nodaemon=false ; 守护进程方式启动
  17. minfds= ; 可以打开的文件描述符
  18. minprocs= ; 可以启动的进程数
  19.  
  20. [rpcinterface:supervisor]
  21. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  22.  
  23. [supervisorctl]
  24. serverurl=unix:///var/tmp/supervisor.sock ; .sock 存放位置
  25.  
  26. # 稍微修改了一些默认项

三、启动

  1. shell > supervisord -c /etc/supervisord.conf
  2.  
  3. # 指定配置文件路径
  4.  
  5. shell > ps aux | grep sup
  6. root 0.0 0.0 ? S : : [sync_supers]
  7. root 0.0 0.1 ? Ss : : /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf

四、启动一个自定义脚本

  1. shell > vim hello.sh
  2.  
  3. #!/bin/bash
  4.  
  5. for i in {..};do echo hello; sleep ;done
  6.  
  7. shell > chmod a+x hello.sh
  1. shell > vim /etc/supervisord.conf
  2.  
  3. [program:hello]
  4. directory=/root ; 运行程序时切换到指定目录
  5. command=/bin/bash hello.sh ; 执行程序 ( 程序不能时后台运行的方式 )
  6. redirect_stderr=true ; 标准错误输出重定向到标准输出
  7. stdout_logfile=hello.log ; 指定日志文件路径,可以绝对路径 ( 相对路径 相对 directory= 指定的目录 )
  8. stdout_logfile_maxbytes=50MB ; 文件切割大小
  9. stdout_logfile_backups= ; 保留的备份数
  10.  
  11. # 加入程序启动配置
  1. shell > supervisorctl
  2.  
  3. supervisor> help
  4.  
  5. default commands (type help <topic>):
  6. =====================================
  7. add exit open reload restart start tail
  8. avail fg pid remove shutdown status update
  9. clear maintail quit reread signal stop version
  10.  
  11. # 客户端工具提供一些指令 ( supervisorctl help 这样运行也是可以的 )
  12.  
  13. supervisor> update
  14. hello: added process group
  15.  
  16. # 自动重启配置文件发生改变的进程
  17.  
  18. supervisor> start hello
  19. hello: started
  20.  
  21. supervisor> status
  22. hello RUNNING pid , uptime ::
  23.  
  24. # 反正就是这几个指令,启动后脚本的输出会被记录到 stdout_logfile= 指定的日志文件中
  25.  
  26. # 现在的情况是,程序执行一次就退出了
  27.  
  28. supervisor> status
  29. hello EXITED Dec : PM
  30.  
  31. supervisor> exit
  1. shell > vim /etc/supervisord.conf
  2.  
  3. [program:hello]
  4. directory=/root
  5. command=/bin/bash hello.sh
  6. autostart=true ; 程序随 supervisord 启动而启动
  7. startsecs= ; 程序启动 后没有退出,认为程序启动成功
  8. startretries= ; 启动失败重试次数
  9. autorestart=true ; 程序退出后自动启动,false 不启动、unexpected 只有退出状态码为 exitcodes= 指定的值是才自动启动
  10. redirect_stderr=true
  11. stdout_logfile=hello.log
  12. stdout_logfile_maxbytes=50MB
  13. stdout_logfile_backups=
  14.  
  15. # 添加一些配置,重新来过
  16.  
  17. supervisor> update
  18. hello: stopped
  19. hello: updated process group
  20.  
  21. # 注意:这次会时间长一点,因为设置了 startsecs=,也就是说 秒后才能 status 看到进程状态
  22.  
  23. # 这次程序就会自动重启了
  1. shell > vim /etc/supervisord.conf
  2.  
  3. [program:hello]
  4. directory=/root
  5. command=/bin/bash hello.sh
  6. process_name=%(program_name)s_%(process_num)02d ; 启动多个进程时设置不同的进程名
  7. numprocs= ; 启动几个进程
  8. autostart=true
  9. startsecs=
  10. startretries=
  11. autorestart=true
  12. redirect_stderr=true
  13. stdout_logfile=hello.log
  14. stdout_logfile_maxbytes=50MB
  15. stdout_logfile_backups=
  16.  
  17. # 又加了启动多个进程的配置
  18.  
  19. supervisor> update
  20. hello: stopped
  21. hello: updated process group
  22.  
  23. supervisor> status
  24. hello:hello_00 RUNNING pid , uptime ::
  25. hello:hello_01 RUNNING pid , uptime ::
  26.  
  27. # 这次长这样了..
  28.  
  29. supervisor> stop all
  30. hello:hello_00: stopped
  31. hello:hello_01: stopped
  32.  
  33. supervisor> status
  34. hello:hello_00 STOPPED Dec : PM
  35. hello:hello_01 STOPPED Dec : PM
  36.  
  37. # 好了收工!

Supervisor 进程管理工具的更多相关文章

  1. linux(centos)下安装supervisor进程管理工具

    在接触supervisor进程管理工具之前,使用springboot打包部署到linux服务器的流程是这样子的,如下图所示: 上图展示的就是最一般的流程,如果项目是小项目或者demo可以这样子去部署, ...

  2. supervisor进程管理工具的使用

    supervisor是一款进程管理工具,当想让应用随着开机启动,或者在应用崩溃之后自启动的时候,supervisor就派上了用场. 广泛应用于服务器中,用于引导控制程序的启动 安装好superviso ...

  3. supervisor进程管理工具

    Supervisor 一个python写的进程管理工具,用来启动.关闭.重启进程,可以同时控制多个进程. 安装: pip install supervisor 配置: 通过配置文件来满足自己的需求 配 ...

  4. python之supervisor进程管理工具

    supervisor是python写的一个管理进程运行的工具,可以很方便的监听.启动.停止.重启一个或多个进程:有了supervisor后,就不用字节写启动和监听的shell脚本了,非常方便. sup ...

  5. CentOS 6.3安装配置supervisor进程管理工具

    1. Supervisor是一个C/S系统,它可以在类unix操作系统让用户来监视和控制后台服务进程的数量,一个很重要的功能就是监控服务器的主要后台进程,并在出现问题是自动重启. 2. 根据服务器上的 ...

  6. 进程管理工具之supervisor[详解]

    原文链接:https://blog.csdn.net/weixin_42390791/article/details/88866237 一.问题背景1.背景​   如何才能让一个进程摆脱终端,获得相对 ...

  7. Linux进程管理工具——supervisor

    介绍 Supervisord是用Python实现的一款非常实用的进程管理工具 安装 这里用源码 supervisor-.tar.gz .tar.gz cd supervisor- sudo pytho ...

  8. supervisor python开发的进程管理工具

    Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的 ...

  9. Python 进程管理工具 Supervisor 使用教程

    Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...

随机推荐

  1. hadoop 安装、命令

    hadoop安装步骤: 安装java 安装hadoop 下载地址:http://apache.claz.org/hadoop/common/ (说明:该网址current文件夹下,是最新版) hado ...

  2. Java8 lam。。。表达式

    双冒号:相当于用了别人实现的方法,格式,类名::方法 Math::max等效于(a, b)->Math.max(a, b)String::startWith等效于(s1, s2)->s1. ...

  3. Navicat导出opencart2.3数据字典

    步骤请参考:http://blog.csdn.net/maquealone/article/details/60764420 运行SQL:   备注:opcml是数据库名称. select TABLE ...

  4. Angular 4 表单校验1

    1.html <form [formGroup]="formModel" (submit)="submit()"> <div> 用户名: ...

  5. 转-使用 CefSharp 在 C# App 中嵌入 Chrome 浏览器

    使用 CefSharp 在 C# App 中嵌入 Chrome 浏览器 2016-09-23    分类:.NET开发.编程开发.首页精华0人评论 分享到:更多3 本文由码农网 – 小峰原创翻译,转载 ...

  6. couldn't launch the emulator make sure the sdk directory is properly setup

    android sdk 路径中不能有空格.转到一个没有空格的文件夹下即可.

  7. virtualbox centos 网络配置

    https://www.centos.bz/2017/08/virtualbox-centos7-nat-bridge/

  8. QSqlDatabase: QMYSQL driver not loaded

    转载:KiteRunner24 在Qt 5.9中使用数据库连接时,弹出下面的错误: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: avail ...

  9. 关于Qt配置编译器的问题

    PC系统:win10 安装了:Visual Studio 2017 Community ; Qt 5.8.0 运行Qt程序时,出现以下错误: 原因:来自知乎 只安装了VS2017(MSVC 15.0) ...

  10. springMVC学习(3)-springMVC和mybatis整合

    一.需求:使用springmvc和mybatis完成商品列表查询. 二.整合思路:springMVC+mybaits的系统架构: 1步):整合dao层 mybatis和spring整合,通过sprin ...