您的位置:

如何安装使用supervisor

一、什么是supervisor

Supervisor是一种针对UNIX系统的客户端/服务器系统,它可以用来使运行在同一台物理机上的多个进程同时工作。使用Supervisor,你可以简单地监控和控制这些进程,以达到保持它们的状态与持续工作的效果。

二、安装supervisor

下面是安装supervisor的步骤。

1. 安装pip

执行以下命令安装pip:

sudo apt-get install python-pip

2. 安装supervisor

使用pip命令安装Supervisor:

sudo pip install supervisor

3. 配置supervisor

一旦安装了Supervisor,我们就需要进行一些配置。

首先,在终端中执行一下命令创建一个默认配置文件:

echo_supervisord_conf >> /etc/supervisord.conf

保存之后,我们可以打开配置文件并对其进行修改:

sudo vi /etc/supervisord.conf

注意:使用vim或者nano也可以进行编辑。

在配置文件中可以看到如下所示的内容:

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Note: shell expansion ("~" or "$HOME") is not supported.  Environment
; variables can be expanded using this syntax: "%(ENV_VAR_NAME)s".
;

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

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/tmp/           ; ('AUTO' child log dir, default $TEMP)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

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

[program:foo]
command=/bin/cat                    ; the program (relative uses PATH, can take args)
process_name=%(program_name)s       ; process_name expr (default %(program_name)s)
numprocs=1                          ; number of processes copies to start (def 1)
directory=/tmp                      ; 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              ; autorestart if exited after running (def: unexpected)
exitcodes=0,2                       ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT                     ; signal used to kill process (default TERM)
stopwaitsecs=10                     ; max num secs to wait before SIGKILL (default 10)
stopasgroup=false                   ; send stop signal to the UNIX process group (default false)
killasgroup=false                   ; SIGKILL the UNIX process group (def false)

这是一个示例配置文件。我们可以根据自己的需求修改或者添加配置。

4. 启动supervisor

执行以下命令以启动supervisor:

sudo supervisord -c /etc/supervisord.conf

注意:如果没加-c参数指定supervisord.conf文件路径,则supervisor会默认使用/etc/supervisord.conf文件路径。

5. 监控supervisor

执行以下命令可以查看supervisor是否在运行。

sudo supervisorctl status

如果你看到类似以下的输出:

unix:///tmp/supervisor.sock:ERROR (no such file)

这可能是因为supervisord服务已经停止了。执行以下命令可以启动服务:

sudo service supervisor start

三、使用supervisor

下面通过一个示例说明如何使用supervisor。

首先,创建一个简单的Python脚本:

#!/usr/bin/env python
import time
 
while True:
    print "Hello World!"
    time.sleep(1)

保存为hello.py。然后在supervisord.conf中添加如下内容:

[program:hello]
command=/usr/bin/python /path/to/hello.py
directory=/path/to
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/path/to/hello.log

然后重新加载配置:

sudo supervisorctl reread
sudo supervisorctl update

这个示例将Python脚本添加为supervisor进程,当supervisord服务运行时会自动启动hello.py。

四、总结

Supervisor是一个非常方便的进程监控与控制工具,通过上述步骤可以轻松安装并使用它。使用它可以让我们更加轻松地管理和监控一些常驻进程。