python进程监控 supervisor_Supervisor监控管理Python进程状态

supervisor是用Python开发的一套通用的进程管理程序,可以将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时可以自动重启。首先我们在运行环境安装并配置supervisor,这里我用的centos7。

安装supervisor# yum search setuptools

....

python-setuptools.noarch : Easily build and distribute Python packages

#yum install -y python-setuptools.noarch

#easy_install supervisor

创建主配置文件# mkdir -m 755 -p /etc/supervisor

\\创建supervisor配置文件目录

# echo_supervisord_conf >/etc/supervisor/supervisord.conf

\\创建主配置文件

# cd /etc/supervisor/

# mkdir -m 755 conf.d

\\创建项目配置文件目录

创建项目配置文件(运行3个脚本)# vim conf.d/test.ini

[program:tjapp_sendmessage]

command=/bin/bash /data/shell/sendmessage.sh

numprocs=1

autostart=true

autorestart=true

[program:bbscollection]

command=/bin/bash /data/shell/bbscollection.sh

numprocs=1

autostart=true

autorestart=true

[program:test_sbbscollection]

command=/bin/bash /data/shell/test_sbbscollection.sh

numprocs=1

autostart=true

autorestart=true

这里如果不想把配置文件卸载一起,分开写也是可以的

在主配置文件中引入test.ini#cat supervisord.conf

...

[include]

files = ./conf.d/*.ini

启动supervisor# supervisord -c /etc/supervisord.conf

查看supervisor运行的脚本# supervisorctl

bbscollection          RUNNING  pid 10090, uptime 4 days, 17:20:10

test_sbbscollection       RUNNING  pid 10088, uptime 4 days, 17:20:10

tjapp_sendmessage        RUNNING  pid 10089, uptime 4 days, 17:20:10

停止bbscollection脚本# supervisorctl stop bbscollection

bbscollection: stopped

[root@om-web_test supervisord.d]# supervisorctl

bbscollection     STOPPED Apr 06 10:23 AM

test_sbbscollection    RUNNING pid 10088, uptime 4 days, 17:23:13

tjapp_sendmessage    RUNNING pid 10089, uptime 4 days, 17:23:13

supervisor> start bbscollection \\启动

supervisor> status

bbscollection     RUNNING pid 7310, uptime 0:00:24

test_sbbscollection    RUNNING pid 10088, uptime 4 days, 17:23:54

tjapp_sendmessage    RUNNING pid 10089, uptime 4 days, 17:23:54

下面跑一个案例program:itchatserver]

command=/usr/local/python3/bin/python3  scwechat.py

process_name=%(program_name)s

numprocs=1

directory=/srv/www/application

priority=998

autostart=true

autorestart=true

startsecs=1

startretries=3

user=root

redirect_stderr=true

stdout_logfile_maxbytes=1MB

stdout_logfile_backups=10

stdout_capture_maxbytes=1MB

stdout_events_enabled=false

stderr_logfile_maxbytes=1MB

stderr_logfile_backups=10

stderr_capture_maxbytes=1MB

stderr_events_enabled=false

配置文件通过[program:itchatserver]指定服务名为itchatserver,command指定启动scwechat.py。

然后重启Supervisor后,就可以随时启动和停止Supervisor管理的服务了:$ sudo supervisorctl reload

$ sudo supervisorctl start itchatserver

$ sudo supervisorctl status

itchatserver                RUNNING    pid 1401, uptime 5:01:34

当然在安装后使用有可能报错的:unix:///tmp/supervisor.sock no such file解决unix:///tmp/supervisor.sock no such file的问题

1、修改supervisord的配置文件

vim /etc/supervisord.conf

这里把所有的/tmp路径改掉,

/tmp/supervisor.sock 改成 /var/run/supervisor.sock,

/tmp/supervisord.log 改成 /var/log/supervisor.log,

/tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自动清掉

此时即使正常启动了supervisord,并且管理的进程也在后台运行,

但是当在命令行执行supervisorctl status还是会报unix:///tmp/supervisor.sock no such file

所以还需要修改如下配置:serverurl=unix:///tmp/supervisor.sock 改成serverurl=unix:///var/run/supervisor.sock,

否则supervisord还是默认去tmp下找sockt文件。此时再执行supervisorctl status就会正常显示进程的状态信息了。

2、修改权限

sudo chmod 777 /run

sudo chmod 777 /var/log

如果没改,启动报错 IOError: [Errno 13] Permission denied: '/var/log/supervisord.log'

3、创建supervisor.sock

sudo touch /var/run/supervisor.sock

sudo chmod 777 /var/run/supervisor.sock

4、启动supervisord,注意stop之前的实例或杀死进程

supervisord

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值