超强进程管理工具Supervisor

给大家推荐一款超强进程管理工具: Supervisor

为什么推荐?

当我们需要运行某些应用 并且希望常驻进程,百度 chrom推荐你使用 nohup命令 & &!screen命令 结果使用起来有时候会不好用 不好管理 多个进程同时维护又很麻烦等各种问题。

为什么推荐 Supervisor ?

  1. 易于管理:Supervisor提供了一个中央管理平台,可以方便地启动、停止、重启进程,而不需要手动进行各种复杂的操作。
  2. 故障恢复:如果一个进程崩溃,Supervisor会自动重启该进程,大大提高了系统的稳定性和可用性。
  3. 日志管理:Supervisor会自动管理进程日志,包括日志的生成、轮转、清理等,让你更加专注于程序本身的开发。
  4. 提高效率:对于需要长期运行的后台进程,使用Supervisor管理可以避免进程意外退出带来的问题,从而提高工作效率
  5. 跨平台:Supervisor支持多种操作系统,包括Linux、Mac OS和Windows,所以无论你使用什么系统,都可以利用Supervisor进行操作。

怎么食用?

  1. Supervisor安装
    我是centos系统 所以以此为例。

     # yum install 的方式
     yum install -y supervisor
    
  2. Supervisor的配置
    如果使用yum install -y supervisor的命令安装,会生成默认配置/etc/supervisord.conf和目录/etc/supervisord.d,如果没有则自行创建。
    /etc/supervisord.d的目录下创建conflog两个目录,conf用于存放管理进程的配置,log用于存放管理进程的日志。

    cd /etc/supervisord.d
    mkdir conf log
    

    修改/etc/supervisord.conf[include]部分,即载入/etc/supervisord.d/conf目录下的所有配置。

    vi /etc/supervisord.conf
    ...
    [include]
    files = supervisord.d/conf/*.conf
    ...
    

    也可以修改supervisor应用日志的目录,默认日志路径为/var/log/supervisor/supervisord.log。

    vi /etc/supervisord.conf
    ...
    [supervisord]
    logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
    logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
    logfile_backups=10          ; (num of main logfile rotation backups;default 10)
    loglevel=info               ; (log level;default info; others: debug,warn,trace)
    pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    ...
    
  3. 管理应用的配置

    进入到/etc/supervisord.d/conf目录,创建管理应用的配置,可以创建多个应用配置。

    例如,创建项目名称.conf配置。

    [program:项目名称]
    directory = /usr/local/bin ; 程序的启动目录
    command = python xiangmumingcheng.py ; 启动命令,与命令行启动的命令是一样的
    autostart = true     ; 在 supervisord 启动的时候也自动启动
    startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
    autorestart = true   ; 程序异常退出后自动重启
    startretries = 3     ; 启动失败自动重试次数,默认是 3
    user = root          ; 用哪个用户启动
    redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
    stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
    stdout_logfile_backups = 20     ; stdout 日志文件备份数
    ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    stdout_logfile = /etc/supervisord.d/log/confd.log  ;日志统一放在log目录下
    ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
    ; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
    
  4. Surpervisor的启动

    # supervisord二进制启动
    supervisord -c /etc/supervisord.conf
    # 检查进程
    ps aux | grep supervisord
    
  5. 设置开机启动及systemd方式启动。

    sudo chmod +x /etc/rc.d/init.d/supervisord
    sudo chkconfig --add supervisord
    sudo chkconfig supervisord on
    sudo service supervisord start
    

接下来可以使用该程序 启动 守护你的进程了

supervisorctl status 进程名 查看进程运行状态
supervisorctl start 进程名  启动进程没用
supervisorctl stop 进程名 关闭进程
supervisorctl restart 进程名 重启进程
supervisorctl update 重新载入配置文件 每次新增配置都需要执行该命令 配置没有改动的进程不会受影响而重启。
supervisorctl shutdown 关闭supervisord
supervisorctl clear 进程名 清空进程日志
supervisorctl 进入到交互模式下。使用help查看所有命令。
start stop restart + all 表示启动,关闭,重启所有进程。

下面是 supervisord 主程序的一些使用

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

```bash
$ supervisord --help
supervisord -- run a set of applications as daemons.

Usage: /usr/bin/supervisord [options]

Options:
-c/--configuration FILENAME -- configuration file
-n/--nodaemon -- run in the foreground (same as 'nodaemon true' in config file)
-h/--help -- print this usage message and exit
-v/--version -- print supervisord version number and exit
-u/--user USER -- run supervisord as this user (or numeric uid)
-m/--umask UMASK -- use this umask for daemon subprocess (default is 022)
-d/--directory DIRECTORY -- directory to chdir to when daemonized
-l/--logfile FILENAME -- use FILENAME as logfile path
-y/--logfile_maxbytes BYTES -- use BYTES to limit the max size of logfile
-z/--logfile_backups NUM -- number of backups to keep when max bytes reached
-e/--loglevel LEVEL -- use LEVEL as log level (debug,info,warn,error,critical)
-j/--pidfile FILENAME -- write a pid file for the daemon process to FILENAME
-i/--identifier STR -- identifier used for this instance of supervisord
-q/--childlogdir DIRECTORY -- the log directory for child process logs
-k/--nocleanup --  prevent the process from performing cleanup (removal of
                   old automatic child log files) at startup.
-a/--minfds NUM -- the minimum number of file descriptors for start success
-t/--strip_ansi -- strip ansi escape codes from process output
--minprocs NUM  -- the minimum number of processes available for start success
--profile_options OPTIONS --
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值