supervisor

supervisor是py2下的一个web管理工具

python2版本:
使用py2的pip工具进行安装
pip install supervisor

安装完成之后多了三个命令
supervisord
supervisorctl
echo_supervisord_conf

在centos下默认在etc下没有生成supervisor的配置文件目录

mkdir /etc/supervisor/supervisord.d/ -p
echo_supervisord_conf > /etc/supervisord.conf 生成supervisor的主配置文件
/usr/bin/supervisord -c /etc/supervisord.conf 按照指定的配置文件启动进程

根据需求修改supervisord.conf最后的include

常用命令
supervisorctl 进入交互界面
supervisorctl status 查看被监控进程状态
supervisorctl stop all 关闭被监控的进程
supervisorctl start all 启动被监控的进程
supervisorctl start program-name 其中program-name为配置文件[program:xx]中的xx
supervisorctl stop program-name 其中program-name为配置文件[program:xx]中的xx
supervisorctl restart all 重启被监控的进程
supervisorctl reatart program-name 重启某一进程,program-name为[program:xx]中的xx
supervisorctl shutdown 关闭supervisord服务端
supervisorctl reload 重新加载配置文件

将supervisor加入到开机自启动服务中

1 利用/etc/rc.local
echo "/usr/bin/supervisord -c /etc/supervisord.conf" >> /etc/rc.local

 /etc/rc.local是/etc/rc.d/rc.local的软连接
如果开机启动不生效,则首先需要检查下/etc/rc.d/rc.local是否具有可执行权限

2 加入systemctl管理
编辑配置文件
vim /lib/systemd/system/supervisor.service

[Unit]
Description=supervisor
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/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


  上述文件编写后,执行如下命令即可:

   systemctl enable supervisor.service      加入开机自启动服务
   systemctl daemon-reload      重新载入systemd,扫描新的或有变动的单元(必要步骤)
   chmod 766 /lib/systemd/system/supervisor.service   修改文件权限
  • supervisor

一个Linux/Unix系统上的进程监控工具
一个Python开发的通用的进程管理程序
可以管理和监控Linux上面的进程
能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启
不过同daemontools一样,它不能监控daemon进程

特点

  • supervisor则可以完美的解决这些问题。supervisor管理进程,就是通过fork/exec的方式把这些被管理的进程,当作supervisor的子进程来启动。这样的话,我们只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去就OK了
  • 被管理进程作为supervisor的子进程,当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,所以当然也就可以对挂掉的子进程进行自动重启,当然重启还是不重启,也要看你的配置文件里面有木有设置autostart=true了
  • supervisor通过INI格式配置文件进行配置

组件

  • supervisord

主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。同时内置web server和XML-RPC Interface,轻松实现进程管理。。该服务的配置文件在/etc/supervisor/supervisord.conf。

  • supervisorctl

客户端的命令行工具,提供一个类似shell的操作接口,通过它你可以连接到不同的supervisord进程上来管理它们各自的子程序,命令通过UNIX socket或者TCP来和服务通讯。用户通过命令行发送消息给supervisord,可以查看进程状态,加载配置文件,启停进程,查看进程标准输出和错误输出,远程操作等。服务端也可以要求客户端提供身份验证之后才能进行操作。

  • Web Server

superviosr提供了web server功能,可通过web控制进程(需要设置[inethttpserver]配置项)

  • XML-R- #supervisor

一个Linux/Unix系统上的进程监控工具
一个Python开发的通用的进程管理程序
可以管理和监控Linux上面的进程
能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启
不过同daemontools一样,它不能监控daemon进程

安装、配置、使用

  • supervisor是python编写的,可以用easy_install、pip都可以安装
    yum install python-setuptools
    easy_install pip
    pip install supervisor
  • 配置
    在supervisord.conf中设置通过web可以查看管理的进程,加入以下代码(默认即有,取消注释即可)
    [inet_http_server]
    port=9001
    username=user
    password=123
  • 启动
    supervisord -c /etc/supervisord.conf
    或者 systemctl start supervisord.service
  • 查看是否处于监听状态
    lsof -i:9- #supervisor
    一个Linux/Unix系统上的进程监控工具
    一个Python开发的通用的进程管理程序
    可以管理和监控Linux上面的进程
    能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启
    不过同daemontools一样,它不能监控daemon进程

管理

  • 查看supervisorctl支持的命令

supervisorctl help

查看当前运行的进程列表

原文地址
https://www.cnblogs.com/smail-bao/p/5673434.html




看是否处于监听状态
lsof -i:9001

posted @ 2019-09-08 09:17  π=3.1415926  阅读(448)  评论(0编辑  收藏  举报