zoukankan      html  css  js  c++  java
  • supervisor process management

    supervisor是unix like系统的进程管理工具

    安装:

    pip install supervisor

    配置文件:

    echo_supervisord_conf # 打印一个配置文件样例
    echo_supervisord_conf > /etc/supervisord.conf  # 在/etc目录生成配置文件

    编辑配置文件supervisord.conf,取消include部分注释,修改files配置项指向的路径

    [include]
    files = /etc/supervisor/*.conf  # /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf  # 使用这个部分可以将不同的配置文件拆分

    创建单独的程序配置文件:

    mkdir /etc/supervisor  # 建立另一个文件夹,用于放置配置文件
    cd /etc/supervisor
    touch test.conf

    在test.conf写入下面的配置信息,可以在一个文件配置多个程序,也可以将多个程序分在不同文件:

    [program:test]
    ; 程序文件的目录 directory
    =/home/think/
    ; 运行程序的命令 command=python test.py user=think # 用户名
    ;下面部分先不用管 autostart
    =true autorestart=true redirect_stderr=true stopsignal=TERM stopasgroup=true

    [program:celery_producer_consumer_res]
    directory=/home/buxizhizhoum/1-Work/2-Codes/celery/producer_consumer
    command=python producer_consumer.py -app %(process_num)s
    numprocs=1
    numprocs_start=10
    process_name=%(program_name)s_%(process_num)s
    autorestart=true
    startsecs=3
    startretries=3
    stdout_logfile=/tmp/%(program_name)s_%(process_num)s.log
    stdout_logfile_maxbytes=20MB
    stdout_logfile_backups=1

    在上面配置文件的directory项指定的目录,新建test.py文件,写入要运行的程序,此处写入的示例程序为:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import datetime
    import time
    import sys
    
    
    while True:
        print >>sys.stdout, datetime.datetime.now()  # 只使用print不会在后续使用supervisorctl tail命令时显示程序输出
        sys.stdout.flush()
        time.sleep(1)

    启动:

    supervisord

    or

    supervisord -c /filename/of/your/config/file.conf

    这时如果配置正确,配置文件中配置的进程应该已经启动

    查看:

    supervisorctl status

    log在/tmp/supervisord.log

    其它:

    supervisorctl stop <program name>  # stop program
    supervisorctl start <program name>
    supervisorctl reload <program name>  # 重新加载配置
    supervisorctl tail <program name>  # 获取程序输出,print的输出不会被获取,只输出sys.stdout, sys.stderr

    管理一组程序:

    [group:celery_task_summary]
    ;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
    programs=celery_tasks  ; each refers to 'x' in [program:x] definitions
    ;priority=999  
    supervisorctl update
    supervisorctl restart celery_task_summary:   # 重启程序组
    supervisorctl restart celery_task_summary:celery_tasks  # 重启程序组里面的一个, 添加程序组后 supervisorctl restart celery_tasks 已经不能使用

    网页监控:

    在之前的配置文件中下面两行的注释取消:

    [inet_http_server]
    port=127.0.0.1:9001

    使用浏览器访问 http://127.0.0.1:9001

  • 相关阅读:
    数据库建表的时候报 “1215 Cannot add foreign key constraint”
    Maven项目中提示:Eclipse “cannot be resolved to a type” error
    数据表设计的几个简单原则
    使用brew安装软件
    linux如何设置用户权限
    前端页面——Cookie与Session有什么区别
    Git Push 避免用户名和密码方法
    $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
    PHP获取POST的原始数据的方法
    PHP底层的运行机制与原理
  • 原文地址:https://www.cnblogs.com/buxizhizhoum/p/8933754.html
Copyright © 2011-2022 走看看