supervisor 是一款很好用的进程管理工具,其命令也很简单,本文基于 Ubuntu18.04 环境对其做一个简单的介绍。
supervisor安装
1 | ubuntu安装: |
安装好之后,默认 supervisor 服务已经启动完成。
配置文件在 /etc/supervisor/conf.d/
路径下,
supervisor 管理进程的配置文件,这里就简单举例:
1 | [program:task] # 管理进程的命名 |
进程配置文件配好之后,然后执行:
1 | supervisorctl reload |
至此配置基本完成,进程也启动起来了。
supervisor 有 supervisord 和 supervisorctl 两种命令类型,supervisord 是服务相关的命令,supervisorctl 是客户端相关的命令,它们的使用方法很简单。
查看 supervisorctl 和启动子进程方式
1 | supervisorctl status # 查看supervisorctl状态 |
说明:
running:进程处于运行状态
starting:Supervisor 收到启动请求后,进程处于正在启动过程中
stopped:进程处于关闭状态
stopping:Supervisor 收到关闭请求后,进程处于正在关闭过程中
backoff:进程进入 starting 状态后,由于马上就退出导致没能进入 running 状态
fatal:进程没有正常启动
exited:进程从 running 状态退出
常用命令:
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop groupworker ,重启所有属于名为groupworker这个分组的进程( start,restart 同理)
supervisorctl stop all,停止全部进程,注:start、restart、stop 都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisor,启动和停止的日志文件存放在 /var/log/supervisor/supervisord.log
注意:显式用 stop 停止掉的进程,用 reload 或者 update 都不会自动重启
常见报错:
1 | Traceback (most recent call last): |
1 | root@ubuntu:~# supervisorctl |
1 | error: <class ‘socket.error’>, [Errno 2] No such file or directory: file:/usr/lib/python2.7/socket.py line: 224 |