• Supervisor使用说明


    Supervisor是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程。它可以同时启动,关闭多个进程,使用起来特别的方便。

    1.组成部分

    supervisor 主要由两部分组成:

    supervisord(server 部分):主要负责管理子进程,响应客户端命令以及日志的输出等;
    supervisorctl(client 部分):命令行客户端,用户可以通过它与不同的 supervisord 进程联系,获取子进程的状态等。

    2.安装

    可以直接使用 pip 安装:

    pip install supervisor
    

    3.配置

    安装完成之后,可以运行 echo_supervisord_conf 生成默认的配置文件:

    echo_supervisord_conf > supervisord.conf
    

    然后可以通过 supervisord 命令启动 supervisord.

    supervisord -c supervisord.conf
    

    我们可以看到 supervisord 已经被启动了, 然后进入 supervisorctl 的 shell 界面。

    $ supervisorctl
    supervisor> status
    supervisor>
    

    由于目前没有添加任何需要管理的进程,所以 status 没有输出人和结果,接下来我们添加一个需要管理的进程 (以启动一个uwsgi程序为例子):
    supervisord.conf文件中添加如下内容

    [program:uwsgi]
    command=/export/servers/Python2.7/bin/uwsgi /export/servers/nginx/conf/uwsgi/Python_20160906.ini ; 启动命令
    stdout_logfile=/tmp/uwsgi_out.log ; stdout 日志输出位置
    stderr_logfile=/tmp/uwsgi_err.log ; stderr 日志输出位置
    autostart=true ; 在 supervisord 启动的时候自动启动
    autorestart=true ; 程序异常退出后自动重启
    startsecs=10 ; 启动 10 秒后没有异常退出,就当作已经正常启动
    

    然后运行以下命令更新配置并启动进程:

    $ supervisorctl reread (只更新配置文件)
    uwsgi: available
    
    $ supervisorctl update (只启动有改动的进程)
    uwsgi: added process group
    
    $ supervisorctl status
    uwsgi                            RUNNING   pid 266077, uptime 0:08:13
    

    我们看到 uwsgi 已经被成功启动了。你可以使用不同的命令来控制进程的启动和关闭。

    $ supervisorctl stop uwsgi
    uwsgi: stopped
    $ supervisorctl start uwsgi
    uwsgi: started
    $ supervisorctl restart uwsgi
    uwsgi: stopped
    uwsgi: started
    

    把所有的配置文件都放在 supervisord.conf 并不是个好主意,一旦管理的进程过多,就很麻烦。所以一般都会 新建一个目录来专门放置进程的配置文件,然后通过 include 的方式来获取这些配置信息

    [include]
    files = /tmp/conf.d/*.conf
    

    然后在目录 /tmp/conf.d 下新建一个配置文件 celery.conf, 配置信息与上面的一致,效果 是一样的。

    4.命令详解

    supervisord: 初始启动Supervisord,启动、管理配置中设置的进程;

    supervisorctl stop(start, restart) xxx,停止(启动,重启)某一个进程(xxx);

    supervisorctl reread: 只载入最新的配置文件, 并不重启任何进程;

    supervisorctl reload: 载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程;

    supervisorctl update: 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;

  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/6541651.html
Copyright © 2020-2023  润新知