一、什么是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是一个非常方便的进程监控与控制工具,通过上述步骤可以轻松安装并使用它。使用它可以让我们更加轻松地管理和监控一些常驻进程。