提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、使用步骤
- 1.安装supervisor-win
- 2.配置supervisord
- 3.配置program
- 4.启动supervisord.exe
- 5.supervisorctl.exe管控
- 二、后台启动
- 总结
前言
windows使用supervisor和linux略有不同,严格来说比linux略难,而且不是所有的特性都支持。
一、使用步骤
1.安装supervisor-win
其实有一个纯exe版本的supervisor,但是实际使用起来比python版的功能差些。所以,经过对比还是supervisor-win更有性价比。
建议使用anaconda3,因为本篇文章基于annaconda3,原生python目录请自行查找,这里不再赘述。
pip install supervisor-win -i https://mirrors.aliyun.com/pypi/simple
安装完成后在anaconda的Scripts下面有exe文件。用到的就红框括起来的几个exe。
2.配置supervisord
使用过linux的都知道/etc/supervisor.conf是配置文件,windows上的配置文件需要用命令生成。
echo_supervisord_conf.exe > D:\supervisord.conf
可以指定目录,不一定非得是D盘。
3.配置program
直接在supervisord.conf里面填就行了。下面是conf示例:
[program:theprogramname]
command=cmd.exe ; the program (relative uses PATH, can take args)
directory=%(ENV_TMP)s ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
startsecs=1 ; # of secs prog must stay up to be running (def. 1)
startretries=3 ; max # of serial start failures when starting (default 3)
autorestart=unexpected ; when to restart if exited after running (def: unexpected)
redirect_stderr=true ; redirect proc stderr to stdout (default false)
stdout_logfile=a\\path ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
在supervisord.conf里面 ; 符号是行注释的意思,去掉行注释,这一行就会被supervidord.exe解析。
字段解释:
[program:theprogramname] : 固定写法,theprogramname是程序名字,英文。
command : 需要执行的命令,建议使用绝对路径
,而且必须是linux那种正斜杠 / 分割目录
directory : 工作目录
autostart : 自动启动,默认开启
startsecs : 程序至少需要维持1秒才被认为启动成功
startretries : 启动失败尝试次数
autorestart : 自动重新启动,如果程序意外退出生效(保活功能)
redirect_stderr : 重定向标准错误日志输出到标准输出,也可以单独输出,依据喜好。
stdout_logfile : 标准输出目录,可以是反斜杠。目录一定要存在,否则报错。
stdout_logfile_maxbytes : 单文件最大空间,超过了另起一个文件
stdout_logfile_backups : 最多保持的日志文件数
4.启动supervisord.exe
配置好了,就可以管控程序了,实测exe程序都可以管控,有些bat报错,还在研究原因
。
再此之前还需要改supervidsord.conf的两个地方,这样supervisorctl.exe才能正常工作,没错supervisorctl.exe和supervisord.exe是通过网络连接的。
#默认的配置
;[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)
#改为
[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)
需要用户名密码就解开username和password的注释。
#默认配置
[supervisorctl]
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris ; should be same as in [*_http_server] if set
;password=123 ; should be same as in [*_http_server] if set
;prompt=mysupervisor ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history ; use readline history if available
#改为
[supervisorctl]
serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris ; should be same as in [*_http_server] if set
;password=123 ; should be same as in [*_http_server] if set
;prompt=mysupervisor ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history ; use readline history if available
需要用户名密码就解开username和password的注释。
就这样基础配置基本完事了,需要其他功能的自行配置。
启动supervisord.exe才能管控程序
D:\conda\envs\supervisord\Scripts\supervisorctl.exe -c D:\conda\envs\supervisord\Scripts\supervisord.conf
这种启动方式是前台启动,cmd关掉就没了。
5.supervisorctl.exe管控
#重新加载,修改了supervisord.conf必须reload
D:\conda\envs\supervisord\Scripts\supervisorctl.exe reload
#查看状态
D:\conda\envs\supervisord\Scripts\supervisorctl.exe status
#启动程序
D:\conda\envs\supervisord\Scripts\supervisorctl.exe start <program name>
#停止程序
D:\conda\envs\supervisord\Scripts\supervisorctl.exe stop <program name>
这里不多介绍了,基本和linux差不多。
二、后台启动
有好几种方法,这里介绍一种vbs方法
supervisord.vbs
Set ws = CreateObject("Wscript.Shell")
ws.run "D:\Work\Anaconda\envs\supervisord\Scripts\supervisord.exe -c D:\conda\envs\supervisord\Scripts\supervisord.conf",vbhide
双击supervisord.vbs,supervisord.exe就在后台启动了,解析来就可以使用supervisorctl.exe管控了。
总结
1、比linux上的略差些,但是基本功能都有,可以满足使用需求。