[supervisor] 使用小记(入门教程)

时间:2022-02-12 01:21:34

之前到现在很久没有用了,还是从安装说下,做个简单的实验,系统为Ubuntu14.04

快速安装配置

sudo pip_python install supervisor
sudo echo_supervisord_conf > /etc/supervisord.conf  # 会报错  permission denied: /etc/supervisord.conf,可以使用下面的语句
sudo su - root -c "echo_supervisord_conf > /etc/supervisord.conf"

这样就生成了一个原始的配置文件,但是有些需要改动下才好使

sudo vim /etc/supervisord.conf

...
[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
...

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
...

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
...

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

这里要注意 unix_http_server 跟 supervisorctl中的 sock 文件目录要一致

然后创建目录

sudo su - root -c “mkdir -p /etc/supervisord.d”

之后进程管理的脚本放到supervisord.d就行了

下面就用一个简单的例子来说明

先写一个测试用的脚本
#!/usr/bin/python
#-*- coding:utf-8 -*-
############################
#File Name: somejob.py
#Author: orangleliu
#Mail: orangleliu@gmail.com
#Created Time: 2015-04-15 11:08:13
#License: MIT
############################

import sys, time

while True:
    print "pyserver runing %s"%time.ctime()
    sys.stdout.flush()
    time.sleep(10)
配置一个进程管理脚本 放在 /etc/supervisord.d 目录下

somejob.ini

[program:somejob]
command=/usr/bin/python /home/lzz/temp/super/somejob.py
directroy=/home/lzz/temp/super/
autostart=true
autorestart=true
startretries=3
user=lzz
stdout_logfile=/home/lzz/temp/super/%(program_name)s.log
stderr_logfile=/home/lzz/temp/super/%(program_name)s.log
操作
  • supervisord 启动
sudo /usr/local/bin/supervisord -c /etc/supervisord.conf
lzz@ubuntu:supervisord.d$ ps -ef|grep super
root      5709     1  0 11:30 ?        00:00:00 /usr/bin/python /usr/local/bin/supervisord -c /etc/supervisord.conf
lzz       5710  5709  0 11:30 ?        00:00:00 /usr/bin/python /home/lzz/temp/super/somejob.py

看到我的job进程已经启动了,检查日志文件, 也已经正常

lzz@ubuntu:super$ tail somejob.log
pyserver runing Wed Apr 15 11:31:47 2015
pyserver runing Wed Apr 15 11:31:57 2015
pyserver runing Wed Apr 15 11:32:07 2015
  • supervisord 重载
supervisorctl reread
supervisorctl update

进程查看

lzz@ubuntu:super$ sudo supervisorctl
somejob                          RUNNING   pid 6021, uptime 0:00:13
  • 进程重载 修改下job 程序,看看效果
sudo supervisorctl reload somejob

查看日志

pyserver runing Wed Apr 15 11:44:22 2015
hi
pyserver runing Wed Apr 15 11:44:32 2015
hi
pyserver runing Wed Apr 15 11:44:38 2015
pyserver runing Wed Apr 15 11:44:48 2015
  • 进程关闭
sudo supervisorctl stop somejob  #启动这里改为start

查看进程

lzz@ubuntu:super$ ps -ef|grep super
root      6020     1  0 11:41 ?        00:00:00 /usr/bin/python /usr/local/bin/supervisord -c /etc/supervisord.conf

还有一部分是web界面的对进程的管理,还有开机启动等,这些可以自行查看文档 或者 google

参考:

声明:

本文出自 “orangleliu笔记本” 博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/45057377

作者orangleliu 采用署名-非商业性使用-相同方式共享协议