利用supervisor管理程序

2019-05-10  本文已影响0人  热血大桃子

前面介绍了如何在centos7自定义系统服务来达到程序开机自启的目的,但如果程序运行挂掉了,必须等到机器重启或者人工去手动恢复。因此这里使用supervisor来进行程序管理。

安装

>>> yum install epel-release
>>> yum install supervisor
>>> systemctl enable supervisord # 开机自启动
>>> systemctl start supervisord # 启动supervisord服务
>>> systemctl status supervisord # 查看supervisord服务状态

配置

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

因此我们只需要在/etc/supervisord.d/创建我们自己的*.ini文件就好了,这里举例说明。

[program:tieba]
command= /root/anaconda3/envs/lch_spider/bin/python /home/lch/cetc10/tiebaspider/run_tieba_spiders.py ## 可以通过&& 执行多条命令
stdout_logfile=/home/lch/cetc10/tiebaspider/log.out # 日志文件
directory=/home/lch/cetc10/encyclopediaSpider/ # 在执行命令前,先进入此目录
environment=PATH=/root/anaconda3/envs/lch_spider/bin/ # 配置python环境,配置了这个,前面的command中的python就不用加具体的路径了
autostart=true # 随着supervisor的自启动而启动
autorestart=true # 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startsecs=5 # 启动5秒后没有异常退出,就表示进程正常启动了,默认为1秒
priority=999 # 进程启动优先级,默认999,值小的优先启动
stopasgroup=true # 默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true # 默认为false,向进程组发送kill信号,包括子进程

配置完成后保存退出,然后重新启动supervisor:

>>> supervisorctl reload
>>> supervisorctl status # 查看状态
[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0: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))

配置完成后,重启程序,然后在浏览器中输入对应主机的ip就可以访问查看了。

上一篇 下一篇

猜你喜欢

热点阅读