supervisor用于linux系统中的后台管理, 需要注意的是, supervisor可以用于python2.4+环境,但是不适用于任何python3.x环境。
supervisor的配置文件在官方文档中有详细说明,配置文件中以;标识注释块。 配置文件格式满足python parseconfig模块的格式要求。 这里主要一些自己比较感兴趣的配置模块:
1. iner_http_server模块可以设置supervisor的web服务模块,可以通过网页来对进程进行管理。
[iner_http_server]
port=0.0.0.0:9001
username=test
password=test
2. [program:test]一般单独放在xxx.conf文件中,并防止在/etc/supervisor/conf.d/文件夹中,这个可以参见/etc/supervisor/supervisord.conf中的files设定
[program: test]
command=xxxxxxxx ;如果有多条命令,可以写入shell脚本再在这里调用
directory=xxxxx ;执行命令是切换到的目录
user=xxxx ;执行命令所用的linux用户身份
autorestart=true ;是否自动重启
autostart=true ;启动supervisor时是否自行启动该程序
redirect_stderr=true ;如果为true则将stderr发送到stdout相应的log文件中去
stdout_logfile=/path/to/logfile ;制定stdout的输出文件
stdout_logfile_maxbytes=10MB ;限定logfile的大小, 默认为50M
stdout_logfile_backups=10 ;保存logfile的最大数目,如果操作这个数目则对最早的logfile进行覆盖,默认为10
environment=A="1", B="2" ;设置环境变量,这里可以保存运行程序需要的参数
如果所用的python是在虚拟环境中,则通过which python获取python命令的全名进行使用即可.
修改完配置文件后需要重新加载和重启服务:
2 sudo supervisorctl reload
3 sudo supervisorctl start app # 如果没有设置自动启动