1. 什么是supervisor
superviosr是一个Linux/Unix系统上的进程监控工具,他/她upervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。不过同daemontools一样,它不能监控daemon进程
2. 为什么使用supervisor
- 使用简单
- 集中管理
3. supervisor组件
supervisord
主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。
supervisorctl
客户端的命令行工具,提供一个类似shell的操作接口。
web server
提供了web server功能,可通过web控制进程。
4. 安装及使用
可以直接通过pip进行安装pip install supervisor
# 生成配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
# 修改配置文件
vim /etc/supervisor/supervisord.conf
# 修改inlude配置文件,*.ini为每个进程的配置文件
[include]
files = ./conf.d/*.ini
增加一个配置文件
[program:test]
command=/usr/local/bin/python -u /Users/han/PycharmProjects/gevent/multiprocess.py ;被监控的进程路径
user=root
autostart=true ;随着supervisord的启动而启动
autorestart=true ;自动重启
stopsignal=KILL ;杀死进程的信号
stopasgroup=true
killasgroup=true
redirect_stderr = true ;重定向stderr到stdout
directory=/Users/han/PycharmProjects/gevent
stdout_logfile=/Users/han/PycharmProjects/gevent/supervisor_log/%(program_name)s.log
stderr_logfile=/Users/han/PycharmProjects/gevent/supervisor_log/%(program_name)s.err.log
操作命令
# 重启supervisord,或者重新加载配置文件
supervisorctl reload 或者 supervisorctl -c /etc/supervisor/supervisord.conf
5. 错误解决方法
couldn’t setuid to 502: Can’t drop privilege as nonroot user
修改配置文件中
user=%(ENV_USER)s
然后执行,supervisorctl reload