标签:multiple 默认值 man card 信息 sig python 格式 stat
小白必看的supervisor教程,帮助认识supervisor,再也不会不知所措
sudo apt install supervisord
- 安装成功后,supervisor会默认启动
/etc/bin
,并且会自动加入到系统服务,随着系统的启动而启动;那么通过系统服务启动supervisor的命令是systemctl start supervisor
,查看supervisor状态的命令是systemctl status supervisor
/etc/supervisor
中生成supervisor.conf
主配置文件;另一种情况是手动生成的配置文件,命令是echo_supervisord_conf > supervisord.conf
命令,这种方式生成的配置信息比较全面; supervisor config file
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
minfds=50000
minprocs=50000
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf
supervisor.conf中的语法格式
- 以 [ ]标示起来的部分是配置参数的分组,[]里的单词可以理解为这一部分的功能概述
- ;标示注释
- 比较值得注意
[include]
files = /etc/supervisor/conf.d/*.conf
这部分的功能是,创建了一个conf.d的文件夹,该文件夹下会有多个.conf的配置文件,用来区分和管理多个进程,当然这里你也可以修改未见的后缀为ini,supervisor会自动的去查找这个文件下的配置文件
首先将supervisor.conf中[include]
配置存放文件的conf.d
文件夹,需要清楚的是,不是非的使用这个名字的文件夹,只要按照files指定的路径能够找得到每个配置文件即可
在conf.d
下创建你的配置文件以.conf
结尾,这里同理跟files中的配置对上即可
常用配置信息,具体请根据实际需求来定,下面只是举例
[program:LotteryCeleryWorker] ;定义你的进程的名字,一定要具有识别性,不要与其他的进程重名
directory= /home/ubuntu/var/service_lottery_server/lotterydraw ; 命令执行的目录,要写绝对路径
command= /home/ubuntu/venv/bin/celery -A mycelery.main worker --loglevel=info ; 运行程序的命令的绝对路径,常用通过pip安装的的python命令就存在环境的bin目录下;后边如果需要跟启动的项目的文件,也是也写绝对路径
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/lottery.err.log ; 错误日志文件
stdout_logfile=/var/log/lottery.out.log ; 输出日志文件
environment=PYTHONPATH='LotteryCeleryBeat/python3.6/site-packages/' ; 进程环境变量,用的不多,因为在command部分可以指定到具体的命令
user=root ; 进程执行的用户身份
priority=17 ;优先级,值越高,最后启动,最先被关闭,默认值999
startsecs=10 ;启动延时执行,默认1秒
stopsignal=INT ;中断信号
详细参数说明
;*为必须填写项
;*[program:应用名称]
[program:cat]
;*命令路径,如果使用python启动的程序应该为 python /home/test.py,
;不建议放入/home/user/, 对于非user用户一般情况下是不能访问
command=/bin/cat
;当numprocs为1时,process_name=%(program_name)s
;当numprocs>=2时,%(program_name)s_%(process_num)02d
process_name=%(program_name)s
;进程数量
numprocs=1
;执行目录,若有/home/supervisor_test/test1.py
;将directory设置成/home/supervisor_test
;则command只需设置成python test1.py
;否则command必须设置成绝对执行目录
directory=/tmp
;掩码:--- -w- -w-, 转换后rwx r-x w-x
umask=022
;优先级,值越高,最后启动,最先被关闭,默认值999
priority=999
;如果是true,当supervisor启动时,程序将会自动启动
autostart=true
;*自动重启
autorestart=true
;启动延时执行,默认1秒
startsecs=10
;启动尝试次数,默认3次
startretries=3
;当退出码是0,2时,执行重启,默认值0,2
exitcodes=0,2
;停止信号,默认TERM
;中断:INT(类似于Ctrl+C)(kill -INT pid),退出后会将写文件或日志(推荐)
;终止:TERM(kill -TERM pid)
;挂起:HUP(kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同
;从容停止:QUIT(kill -QUIT pid)
;KILL, USR1, USR2其他见命令(kill -l),说明1
stopsignal=TERM
stopwaitsecs=10
;*以root用户执行
user=root
;重定向
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
;环境变量设置
environment=A="1",B="2"
serverurl=AUTO
常用命令汇总
supervisorctl status //查看所有进程的状态
supervisorctl stop program中设置的项目名称 //停止单个进程
supervisorctl start program中设置的项目名称 //启动当个进程表
supervisorctl restart program中设置的项目名称 //重启单个进程
supervisorctl update //配置文件修改后使用该命令加载新的配置
supervisorctl reload //重新启动配置中的所有程序
supervisorctl reread //检查配置信息是否有逻辑错误
如果这是第一次运行supervisor,可以直接使用supervisord -c /etc/supervisord.conf
来启动
如果你的机器中已经运行了supervisor,你又新添加了自己的项目
supervisorctl reread
检查你的配置信息是否有明显的逻辑错误,这里supervisor会对你的配置信息进行检查,确保你的配置命令可行,你配置的文件路径是否存在;检查完毕后他会提示你具体的错误信息或者配置信息是否有所变化supervisorctl update
加载配置信息,当你的配置文件修改之后,要想生效,也要执行这条命令supervisorctl reload
,因为这条命令是。重新加载所有的supervisor里的配置进程,除非你对supervisor管理的进程了如指掌;个人建议使用supervisorctl start program中设置的项目名称
的方式启动你的新进程对于单个进程的管理
supervisorctl stop program中设置的项目名称 //停止单个进程
supervisorctl start program中设置的项目名称 //启动当个进程表
supervisorctl restart program中设置的项目名称 //重启单个进程
多个进程的管理
supervisorctl status //查看所有的进程状态
supervisorctl start all //启动所有的进程
supervisorctl stop all //停止所有的进程
supervisorctl reload //重新启动配置中的所有程序
通过supervisor的管理
supervisord -c supervisor.conf //通过配置文件启动supervisor
supervisord shutdown //停止supervisor的运行
supervisorctl -c supervisor.conf status //查看状态
supervisorctl -c supervisor.conf reload //重新载入配置文件
supervisorctl -c supervisor.conf start [all]|[x] //启动所有/指定的程序进程
supervisorctl -c supervisor.conf stop [all]|[x] //关闭所有/指定的程序进程
标签:multiple 默认值 man card 信息 sig python 格式 stat
原文地址:https://www.cnblogs.com/jjzz1234/p/12219202.html