一、简介

Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启

详细介绍查阅:Supervisor Introduction

二、安装

Supervisor 支持 Linux 和 Mac,不支持 Windows

本文系统为: centos,supervisor==4.2.4

pip3 install supervisor

安装完成后,在Python bin目录下面会有这样几个文件。

ls /usr/local/Python38/bin

echo_supervisord_conf
supervisorctl
supervisord

:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。

三、创建配置文件

  1. 首先建个目录,存放配置文件:mkdir supervisord
echo_supervisord_conf > supervisord/supervisord.conf

若报错 -bash: /etc/supervisord.conf: Permission denied,需要切换到 root用户。

  1. 创建子进程配置文件路径
mkdir -p supervisor/conf.d

后面我们的任务,我们想把它作为守护进程,都需要一个配置文件,我们把这些配置文件放在conf.d目录下面。

  1. 修改配置文件
vim supervisord/supervisord.conf

将最后一部分改为

[include]
# 因为我这里是放在root用户目录下,也可以放其它目录
files=/root/supervisord/conf.d/*.conf

四、初试

  1. 启动 supervisord
supervisord -c supervisord/supervisord.conf

这样就把supervisord启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。

查看版本

supervisord -v
  1. 编写简单的 Shell 脚本
vim supervisord/test.sh

内容如下

#!/bin/bash
while :
do
echo `date '+%Y-%m-%d %H:%m:%S'`
sleep 1
done

简单运行,Ctrl + C 退出

  1. 创建子进程配置文件
vim supervisor/conf.d/test.conf

test.conf内容如下:

[program:test]
command=sh /root/supervisord/test.sh
priority=999 ; 相对启动优先级,数值越小越优先,默认为999
autostart=true ; 在supervisor启动时自动启动,默认为true
autorestart=true ; 在意外退出时重新启动,默认为true
startsecs=10 ; 子进程启动多少秒后状态为running则认为启动成功,默认为1
startretries=3 ; 尝试启动的最大次数,默认为3
exitcodes=0,2 ; 进程的预期退出代码列表,默认为0
stopsignal=QUIT ; 终止进程的信号,默认为TERM
stopwaitsecs=10 ; 在SIGKILL之前等待的最大秒数,默认为10
user=root ; 在某用户下设置uid来启动程序,默认不切换用户
redirect_stderr=true ; 是否重定向stdout和stderr,默认为false
stdout_logfile=/tmp/supervisor.stdout.log ; stdout的输出文件,默认为AUTO
stdout_logfile_maxbytes=50MB ; stdout最大文件大小,默认为50MB
stdout_logfile_backups=10 ; stdout文件备份数,设为0则不备份,默认为10

其实只需要配置3个参数,其它不用管:

  • command=sh /root/supervisord/test.sh: 我们的子进程启动命令;
  • stdout_logfile=/tmp/supervisor.stdout.log: 日志;
  • program:test:进程名为test,如果进程哪一天想停止启动等,需要进程名;

目前文件目录结构是这样的:

yum install tree
tree supervisord supervisord
├── conf.d
│ └── test.conf
├── supervisord.conf
└── test.sh
  1. 重新读取配置并更新子进程

因为我们的supervisord已经启动了,可以通过ps -ef | grep supervisord.conf查看。添加了子进程配置文件,需要把它重新加载进来:

先进入supervisord目录: cd supervisord,否则执行下面命令会有问题。

supervisorctl reread

再次查看进程状态

supervisorctl status

结果:

test     RUNNING   pid 30278, uptime 1:29:41

名为test的这个进程已经作为守护进程在后台运行,我们来kill掉他:

kill 30278

再执行supervisorctl status,会发现状态立马由starting,不一会变成running,那么supervisord的作用已经很明显了,可以自动帮我们自动监控任务。

:对于子进程的添加、删除、启动、停止相关命令,见附录。

五、Web 界面

web界面没多大用处,就是如果想启动、暂停进程是,不需要敲命令而已。

vim supervisord.conf

取消注释

[inet_http_server]
port=*:9001 ; 此处改为*便于调试

重启 supervisord

supervisorctl reload

浏览器访问:linux_ip:9001.

附录:supervisorctl 常用命令

新增某配置文件,重新加载

supervisorctl reread

改动某配置文件,重新加载

supervisorctl update

重启 supervisord

supervisorctl reload

查看所有进程状态

supervisorctl status

查看指定进程状态

supervisorctl status <name>

启动所有子进程

supervisorctl start all

启动指定子进程

supervisorctl start <name>

重启所有子进程

supervisorctl restart all

重启指定子进程

supervisorctl restart <name>

停止所有子进程

supervisorctl stop all

停止指定子进程

supervisorctl stop <name>

添加子进程到进程组

supervisorctl add <name>

从进程组移除子进程,需要先stop。注意:移除后,需要使用reread和update才能重新运行该进程

supervisorctl reomve <name>

欢迎访问我的个人博客,听听我的故事

Python进程管理神器——Supervisor的更多相关文章

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

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

  2. python进程管理工具Supervisor

    一.Supervisor简单介绍 supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与lau ...

  3. 进程管理工具supervisor

    1. 简介 supervisor有两个组件:supervisord和supervisorctl,组成了client/server结构. supervisord负责读入配置文件,然后supervisor ...

  4. Linux进程管理工具Supervisor的安装配置

    目录 Linux进程管理工具Supervisor的安装配置 简介 安装Python包管理工具 安装Supervisor 配置 配置文件参数说明 配置进程管理 启动supervisor 控制进程 交互终 ...

  5. supervisor - Python进程管理工具(转)

    add by zhj: 下面是在ubuntu上的一些使用经验 1. 简介 supervisor有两个组件:supervisord和supervisorctl,组成了client/server结构. s ...

  6. supervisor - Python进程管理工具

    经常会碰到要写一些守护进程,简单做法放入后台: shell> nohup python xxx.py & 偶尔这么做还可以接受,如果一堆这样的呢? 当然还有一个问题,就是各种服务,对应的 ...

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

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

  8. 进程管理工具Supervisor(一)简介与使用

    Supervisor是用Python开发的一套client/server架构的进程管理程序,能做到开机启动,以daemon进程的方式运行程序,并可以监控进程状态等等. linux进程管理方式有传统的r ...

  9. linux 使用进程管理工具 supervisor

    1.supervisor是使用python进行开发的运行在linux服务器上的进程管理工具 老版本的supervisor需要运行在python2环境,如果需要使用supervisor管理python3 ...

随机推荐

  1. 双列集合Map接口 & Collections工具类

    HashMap 常用方法 遍历方式 iterator迭代器  ITIT HashTable 继承字典 Hashtable--Properties 文件读写 总结 Collections工具类

  2. xpath & csv文件读写

    原理:拿到网页源代码并且进行分析 关键词:etree     .xpath      a[@href="dapao"]      a/@href       text() impo ...

  3. .NET桌面程序应用WebView2组件集成网页开发4 WebView2的线程模型

    系列目录     [已更新最新开发文章,点击查看详细] WebView2控件基于组件对象模型(COM),必须在单线程单元(STA)线程上运行. 线程安全 WebView2必须在使用消息泵的UI线程上创 ...

  4. mysql内连接查询之自连接

    连接查询: 当查询数据时,通过连接操作查询出存放在多个表中的不同数据,当两个或者多个表中存在相同意义的字段时, 便可以通过这些字段对不同的表进行连接查询. 自连接: 如果在一个连接查询中,涉及的两个表 ...

  5. 一文详解 FTP、FTPS 与 SFTP 的原理

    开源Linux 长按二维码加关注~ 上一篇:2020年MySQL数据库面试题总结 无论是网盘还是云存储,上传都是一项很简单的操作.那些便捷好用的上传整理工具所用的 FTP 协议到底是什么意义,繁杂的模 ...

  6. 老生常谈系列之Aop--Spring Aop源码解析(一)

    老生常谈系列之Aop--Spring Aop源码解析(一) 前言 上一篇文章老生常谈系列之Aop--Spring Aop原理浅析大概阐述了动态代理的相关知识,并且最后的图给了一个Spring Aop实 ...

  7. RabbitMQ 3.9( 基础 )

    1.认识MQ 1.1.什么是MQ? MQ全称:message queue 即 消息队列 这个队列遵循的原则:FIFO 即 先进先出 队列里面存的就是message 1.2.为什么要用MQ? 1.2.1 ...

  8. CSS Diner详解

    详细CSS Diner CSS Diner想必很多人听过,这是一个练习CSS中的选择器的不错的网站,最近在学习前端,打算好好写一下 常用英文单词: plates:盘子 bento:盒饭.便当 pick ...

  9. 1903021121—刘明伟—Java第四周作业—java分支语句学习

    项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 第四周作业 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果). 扩展阅 ...

  10. Nginx基本配置与应用

    一.准备 1.1 环境准备 CentOS7软件环境 1.2 tomcat多实例 把/etc/profile.d/tomcat.sh中的变量注释了 #export TOMCAT_HOME=/usr/lo ...