一、简介

1、supervisor是什么

superviosr是一个Linux/Unix系统上进程监控和管理的工具,它由python编写,可以用pip安装。supervisor能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启

2、为什么要使用supervisor

supervisor可以实现单个或成组地控制进程,它可以把web服务的进程组当作自己的子进程,在子进程挂掉时重启。对一组进程进行统一管理是linux没有的功能

3、supervisor组件

supervisord是管理其他进程的主进程
supervisorctl是supervisor客户端的命令行工具

二、安装与配置

#安装
yum install python-setuptools -y
easy_install supervisor #生成一个配置文件
echo_supervisord_conf > /usr/local/supervisord.conf #修改[inet_http_server]配置,来启用WEB管理界面
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ; ip_address:port specifier, *:port for all iface
username=root ; default is no username (open server)
password=123456 ; default is no password (open server) [include]
files = /usr/local/supervisor_conf/*.ini ;配置文件存放地址

  

三、使用

#进程测试脚本
[root@localhost~]#cat /usr/local/scripts/t.sh
#!/bin/bash
while true;do
date "+%Y-%m-%d %T" >>/tmp/t1.txt
sleep 1
done [root@localhost~]chmod +x /usr/local/scripts/t.sh #创建监控配置目录
mkdir /usr/local/supervisor_conf/ #创建配置文件
[root@localhost~]#cat /usr/local/supervisor_conf/test_t.ini
[program:test_t1]
command=/bin/bash /usr/local/scripts/t.sh ;启动命令
autostart=true ; 在supervisord启动的时候也自动启动
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
priority=2 ; 进程启动优先级,默认999,值小的优先启动
stdout_logfile=/tmp/test_t1.log ;日志文件 #启动Supervisor服务
[root@localhostscripts]#supervisord -c /usr/local/supervisord.conf #查看与测试
[root@localhostscripts]#tailf /tmp/t1.txt #有文本一直写入 [root@localhostscripts]#ps -ef|grep bash |grep t.sh
root 12588 12587 0 09:45 ? 00:00:00 /bin/bash /usr/local/scripts/t.sh #提前监控,测试杀掉进程
[root@localhost~]#ps -ef|grep bash |grep t.sh
root 12588 12587 0 09:45 ? 00:00:00 /bin/bash /usr/local/scripts/t.sh
[root@localhost~]kill 12588
[root@localhost~]#ps -ef|grep bash |grep t.sh
root 13112 12587 0 09:49 ? 00:00:00 /bin/bash /usr/local/scripts/t.sh

  

4、交互终端

supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。

[root@localhostscripts]#supervisorctl
Server requires authentication
Username:root
Password: test_t1 RUNNING pid 13262, uptime 0:02:13
supervisor> help default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version supervisor> stop all
supervisor> start all

  

五、web管理

#修改监听端口
vim /usr/local/supervisord.conf
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:9001 ; ip_address:port specifier, *:port for all iface
#重启
[root@localhost~]#ps -ef|grep supervisord
root 13261 1 0 09:50 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
root 14051 12337 0 09:56 pts/7 00:00:00 grep --color=auto supervisord
[root@localhost~]#kill 13261
[root@localhost~]supervisord -c /usr/local/supervisord.conf  

浏览器访问

六、Supervisor配置systemctl服务

vim  /usr/lib/systemd/system/supervisor.service
[Unit]
Description=supervisor
After=network.target [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /usr/local/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target ##干掉原先的supervisor进程
[root@localhost~]#ps -ef|grep super
root 14065 1 0 09:57 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
[root@localhost~]#kill 14065
#使用systemctl启动
[root@localhost~]#systemctl start supervisor.service
[root@localhost~]#systemctl status supervisor.service
● supervisor.service - supervisor
Loaded: loaded (/usr/lib/systemd/system/supervisor.service; disabled; vendor preset: disabled)
Active: active (running) since 日 2019-04-28 10:03:34 CST; 1s ago
Process: 14931 ExecStart=/usr/bin/supervisord -c /usr/local/supervisord.conf (code=exited, status=0/SUCCESS)
Main PID: 14934 (supervisord)
CGroup: /system.slice/supervisor.service
├─14934 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
├─14935 /bin/bash /usr/local/scripts/t.sh
└─14937 sleep 1 4月 28 10:03:34 localhost.localdomain systemd[1]: Starting supervisor...
4月 28 10:03:34 localhost.localdomain systemd[1]: Started supervisor.
#开机自启
[root@localhost~]systemctl enable supervisor.service
Created symlink from /etc/systemd/system/multi-user.target.wants/supervisor.service to /usr/lib/systemd/system/supervisor.service.

  

Supervisor安装与使用的更多相关文章

  1. supervisor安装和配置

    直接命令 easy_install supervisor 如果报错先安装 yum install python-setuptools,再上面一条命令: 安装成功后显示finished,我们再次进行py ...

  2. Supervisor 安装及配置管理uwsgi进程

    Supervisor介绍 Supervisor 允许其用户在UNIX类操作系统上控制多个进程. 块如下: 方便 需要为每个进程实例编写rc.d脚本通常是不方便的. rc.d脚本是进程初始化/自动启动/ ...

  3. mac下supervisor安装及简单配置

    supervisor是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(守护进程).可以用他来管理自己的“服务程序”. 安装 首先安装Python,Mac系统好像自带. 执 ...

  4. supervisor安装、使用详解

    supervisor是用python写的一个进程管理工具,用来启动,重启,关闭进程. 1 supervisor的安装 pip install supervisor 2 supervisor的配置文件( ...

  5. supervisor安装部署和使用实例

    Supervisord是用Python实现的一款非常实用的进程管理工具,类似于monit,monit和supervisord的一个比较大的差异是supervisord管理的进程必须由superviso ...

  6. Supervisor安装与配置(Linux/Unix进程管理工具)

    原文链接:http://blog.csdn.net/xyang81/article/details/51555473 Supervisor(http://supervisord.org/)是用Pyth ...

  7. Linux系统下 Supervisor 安装搭建(yum安装)

    安装Supervisor # 安装supervisor yum install supervisor # 打开supervisor的配置文件 vi /etc/supervisord.conf 将sup ...

  8. Linux系统下 Supervisor 安装搭建

    在 web 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常.报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务. 所以,就需要一个工具,时刻监控 web 应用 ...

  9. supervisor安装及其配置

    一.supervisor概述 supervisor是一个c/s系统,被用来在类Unix系统中监控进程状态.supervisor使用python开发. 服务端进程为supervisord,主要负责启动自 ...

  10. Supervisor安装与配置

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

随机推荐

  1. [逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解

    二进制拆弹 binary bombs 教你最快速解题,成功拆弹 最近计算机基础课,的实验lab2,二进制拆弹,可以说是拆的我很快乐了(sub n, %hair) 此处头发减n 我刚开始做的时候很是懵逼 ...

  2. Java集合与泛型中的几个陷阱,你掉进了几个?

    下面我总结了集合.泛型.数组转集合等一些常见的陷进,认真看完,相信你绝对有所收获. 1.List ,List<?> 与 List<Object> 有区别吗? 说实话,我敢保证很 ...

  3. Git开发分支使用与管理规范

    最稳定的代码放在 master 分支上(相当于 SVN 的 trunk 分支),我们不要直接在 master 分支上提交代码,只能在该分支上进行代码合并操作,例如将其它分支的代码合并到 master ...

  4. ajax的嵌套需要注意的问题

    当我们要嵌套ajax的时候,需要注意 异步/同步 的处理,一般是要设置成同步,如果是异步,那么被嵌套的ajax的操作很可能获取不到想要的值,因为他可能比嵌套他的ajax跑的更早 在ajax中有一个as ...

  5. Spring Boot Security 详解

    简介 Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权. 工作 ...

  6. nginx系列6:nginx的进程结构

    nginx的进程结构 如下图: 通过ps –ef | grep nginx可以看到共有三个进程,一个master进程,两个worker进程. nginx是多进程结构,多进程结构设计是为了保证nginx ...

  7. HotSpot 虚拟机垃圾回收算法实现

    作为使用范围最广的虚拟机之一HotSpot,必须对垃圾回收算法的执行效率有严格的考量,只有这样才能保证虚拟机高效运行 枚举根节点 从可达性分析中从 GC Roots 节点找引用链这个操作为例,可以作为 ...

  8. typescript中的泛型

    泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性. 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能. 在像C#和Ja ...

  9. 安装Docker时错误提示 "could not change group /var/run/docker.sock to docker: group docker not found"的解决方案

    安装Dock服务,主要命令是  yum install docker. 但是在启动的时候报错:warning msg="could not change group /var/run/doc ...

  10. live-server 介绍&安装

    live-server是可以运行前端静态文件的一个服务器,既然我们要前后端分离,所以就需要单独将html代码运行起来,这里我们选择live-server,等到后边真正部署的时候在用nginx js的解 ...