• 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: 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;

  • 相关阅读:
    lunix查询jdk安装路径
    (四)爬虫之动态网页
    (二)爬虫之数据提取
    图及其衍生算法(Graphs and graph algorithms)
    树及其衍生算法(Trees and tree algorithms)
    数据结构之链表(Linked list)
    查找与排序算法(Searching adn Sorting)
    数据结构之双端队列(Deque)
    数据结构之队列(Queue)
    多个git账号的SSH配置
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/6541651.html
Copyright © 2020-2023  润新知