博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程管理工具Supervisor的安装及使用
阅读量:7113 次
发布时间:2019-06-28

本文共 4944 字,大约阅读时间需要 16 分钟。

hot3.png

supervisor-guide

Supervisor 是基于 Python ,运行于 Unix-Like 系统的进程管理工具。

Supervisor 为需要以守护进程方式执行的程序提供了不错的管理方式,也能很友好的管理程序在命令行上输出的日志,将日志重定向到自定义的日志文件中,按文件大小对日志进行分割。

<!-- more -->

Supervisor 有两个主要的组成部分:

  • supervisord,运行 Supervisor 时会启动一个进程 supervisord,负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
  • supervisorctl,命令行管理工具,用来执行 stop、start、restart 等命令,实现对 supervisord 子进程进行管理。

安装

  • 使用 pip install 安装 supervisor 程序
pip install supervisor
  • 生成 supervisor 的运行配置文件
echo_supervisord_conf > /etc/supervisord.conf

配置文件说明

默认配置

默认的配置文件是下面这样的,但是这里有个坑需要注意,supervisord.pid 以及 supervisor.sock 是放在 /tmp 目录下,但是 /tmp 目录是存放临时文件,里面的文件是会被 Linux 系统删除的,一旦这些文件丢失,就无法再通过 supervisorctl 来执行 restart 和 stop 命令了,将只会得到 unix:///tmp/supervisor.sock 不存在的错误 。

[unix_http_server];file=/tmp/supervisor.sock   ; (the path to the socket file);可以修改为 /var/run 目录,避免被系统删除file=/var/run/supervisor.sock   ; (the path to the socket file);chmod=0700                 ; socket file mode (default 0700);chown=nobody:nogroup       ; socket file uid:gid owner;username=user              ; (default is no username (open server));password=123               ; (default is no password (open server));[inet_http_server]         ; inet (TCP) server disabled by default;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for ;all iface);username=user              ; (default is no username (open server));password=123               ; (default is no password (open server))...[supervisord];logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log);可以修改为 /var/log 目录,避免被系统删除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=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid);修改为 /var/run 目录,避免被系统删除pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)...;设置启动supervisord的用户,一般情况下不要轻易用root用户来启动,除非你真的确定要这么做;user=user                 ; (default is current user, required if root)...[supervisorctl]; 必须和'unix_http_server'里面的设定匹配;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket;修改为 /var/run 目录,避免被系统删除serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket;username=user              ; should be same as http_username if set;password=123                ; should be same as http_password if set...

使用浏览器来管理

supervisor 提供了通过浏览器来管理进程的方法,只需解开 /etc/supervisord.conf 如下几行的注释.

;[inet_http_server]         ; inet (TCP) server disabled by default;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for ;all iface);username=user              ; (default is no username (open server));password=123               ; (default is no password (open server))[supervisorctl]...;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket;username=chris              ; should be same as http_username if set;password=123                ; should be same as http_password if set

使用 include

在配置文件的最后,有一个 [include] 的配置项,跟 Nginx 一样,可以 include 某个文件夹下的所有配置文件,这样我们就可以为每个进程或相关的几个进程的配置单独写成一个文件。

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

子进程配置

参照 /etc/supervisord.conf 中 program 配置进行子进程的配置

;[program:theprogramname];command=/bin/cat              ; the program (relative uses PATH, can take ar\gs);process_name=%(program_name)s ; process_name expr (default %(program_name)s);numprocs=1                    ; number of processes copies to start (def 1);directory=/tmp                ; directory to cwd to before exec (def no cwd);umask=022                     ; umask for process (default None);priority=999                  ; the relative start priority (default 999);autostart=true                ; start at supervisord start (default: true);startsecs=1                   ; # of secs prog must stay up to be running (d\ef. 1);startretries=3                ; max # of serial start failures when starting\ (default 3);autorestart=unexpected        ; when to restart if exited after running (def\: unexpected)

启动 supervisord

执行 supervisord 命令,将会启动 supervisord 进程,同时我们在配置文件中设置的进程也会相应启动。

# 使用默认的配置文件 /etc/supervisord.confsupervisord# 明确指定配置文件supervisord -c /etc/supervisord.conf

supervisorctl 命令介绍

# 停止某一个进程,program_name 为 [program:x] 里的 xsupervisorctl stop program_name# 启动某个进程supervisorctl start program_name# 重启某个进程supervisorctl restart program_name# 结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)supervisorctl stop groupworker:# 结束 groupworker:name1 这个进程 (start,restart 同理)supervisorctl stop groupworker:name1# 停止全部进程,注:start、restart、stop 都不会载入最新的配置文件supervisorctl stop all# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程supervisorctl reload# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启supervisorctl update

转载于:https://my.oschina.net/u/1583186/blog/786991

你可能感兴趣的文章
SQL Server 2016下SSMS通过FULL备份数据还原指定表信息
查看>>
所有的程序员都是自学成才
查看>>
我的友情链接
查看>>
数据库测试技巧和方法
查看>>
我的友情链接
查看>>
JS实现系统调色板
查看>>
Spring3注解零配置【私塾在线原创】
查看>>
可变数组不下心变成了不可变数组
查看>>
GOROOT与GOPATH
查看>>
我的友情链接
查看>>
'UIAlertController can only have one action with a style of UIAlertActionStyleCancel'
查看>>
cocoaPods 使用
查看>>
MYSQL5.7.10 安装文档
查看>>
母婴电商:不只卖给妈妈,何不换个思路卖给爸爸?
查看>>
口碑驱动显疲态 手机品牌营销向广告倾斜
查看>>
Oracle数据库排序后分页慢的问题
查看>>
“AFNetworking.h” file not found 问题的解决
查看>>
利用echart 做以特定数值为分界线的图表
查看>>
单例模式
查看>>
Git两分钟指南
查看>>