• supervisor使用小记


    介绍

    supervisor是一个利用python开发的进程管理工具,可以控制其所管理的进程,包括但不限于其所管理程序异常退出时的重启

    安装

    利用linux自带的包管理命令或者python的包管理命令即可安装

    Debian

    apt-get install supervisor
    

    Cent

    yum install supervisor
    

    Arch

    pacman -S supervisor
    

    pip

    pip install supervisor
    

    配置文件

    不同的安装方式配置文件所在的目录可能有所差异,甚至没有生成默认的配置文件,以arch为例配置文件在/etc目录下,路径为/etc/supervisord.conf。一般来说/etc目录就是存放各种配置文件的。如果配置文件不存在,或者想修改配置文件目录,使用下面命令:

    echo_supervisord_conf > /路径名/supervisord.conf
    

    重点关注文件最后两行,

    [include]
    /etc/supervisor.d/*.ini
    

    这里写的是所管理的进程的配置文件所在路径以及文件格式,可以看到默认的是.ini文件也可以修改为.conf文件

    启动supervisord

    第一次启动命令

    supervisord -c /etc/supervisord.conf
    

    设置开机自启

    systemctl enable supervisord
    

    子进程配置文件

    正如上面所介绍,supervisor的子进程配置文件目录已经在supervisord.conf文件中写好,或者你也可以修改为自定义的目录,

    supervisord管理的进程可以有多个,多个进程的配置文件可以写在多个文件中,也可以写在一个配置文件中,通常是一个项目相关的进程写在一个文件中,

    配置文件模版(.conf文件):

    [program:blog]                           ;项目名
    directory=/opt/bin                       ;脚本目录
    command=/usr/bin/python /opt/bin/test.py ;脚本执行命令
    autostart=true                         ;supervisor启动的时候是否随着同时启动,默认True
    autorestart=false                      ;当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的
    
    startsecs=1                            ;这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
    
    user = test                            ;脚本运行的用户身份 
    stderr_logfile=/tmp/blog_stderr.log    ;标准错误日志输出 
    stdout_logfile=/tmp/blog_stdout.log    ;标准输出日志输出 
    redirect_stderr = true                 ;把stderr重定向到stdout,默认 false
    stdout_logfile_maxbytes = 20MB         ;stdout日志文件大小,默认 50MB
    stdout_logfile_backups = 20            ;stdout日志文件备份数
    

    supervisorctl命令

    supervisorctl status        //查看所有进程的状态
    supervisorctl stop es       //停止es
    supervisorctl start es      //启动es
    supervisorctl restart       //重启es
    supervisorctl update        //配置文件修改后使用该命令加载新的配置
    supervisorctl reload        //重新启动配置中的所有程序
    

    注:把es换成all可以管理配置中的所有进程。直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。

  • 相关阅读:
    [Oracle工程师手记]Linux环境中,反复调用SQLPLUS 执行SQL语句的例子
    [Oracle工程师手记] 记一次 transport lag 的解析
    [Oracle工程师手记] V$ARCHIVE_GAP中的 GAP 何时产生?
    [Oracle 工程师手记] nologging 操作的优先级
    [Oracle 工程师手记] ORA-16642: DB_UNIQUE_NAME mismatch 的解决过程
    [Oracle 工程师手记] 如何构造数据库的 log on trigger
    Groovy调用MD5加密
    Jenkins Pipeline调用 httpRequest插件提交Http请求
    Python调用Jenkins接口批准/拒绝Pipeline流程
    Access 的top和order by 的问题
  • 原文地址:https://www.cnblogs.com/kainhuck/p/14553926.html
Copyright © 2020-2023  润新知