跳转至

Supervisor

Supervisor是一款开源的进程管理工具,可以在Linux和Unix系统上管理进程、守护进程和应用程序。Supervisor可以监控进程状态,自动重启失败的进程,记录进程日志等。

通过CURL 重启服务

-u 携带账户密码 
curl -L -u username:passwd -d 'processname=web_tools&action=restart' http://10.44.3.3:9101

安装

pip install supervisor

生成Supervisor配置文件

echo_supervisord_conf > /etc/supervisord.conf

配置文件

[program:web]
command=/usr/bin/python /root/web/web.py
directory=/root/web/web
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/root/web/web.log
user=your_username

program: webcommand:表示启动命令;
directory:表示应用程序的工作目录;
autostart:表示是否自动启动;
autorestart:表示进程崩溃时是否自动重启;
redirect_stderr:表示是否重定向标准错误输出;
stdout_logfile:表示标准输出日志文件的路径。
user:表示服务所运行的用户。

启动服务

supervisord -c /etc/supervisord.conf

管理命令

1
2
3
4
5
6
7
supervisorctl status

supervisorctl start web

supervisorctl stop web

supervisorctl restart web

web控制supervisord

在 /etc/supervisor/supervisord.conf 文件中添加以下配置:

1
2
3
4
[inet_http_server]
port = 0.0.0.0:9001
username = user
password = pass
后面直接使用设置的密码和账户登录即可

全部配置解释

[supervisord] 部分:

logfile:Supervisor 的日志文件路径。
logfile_maxbytes:Supervisor 日志文件的最大大小,超过此大小将会被轮换。
logfile_backups:Supervisor 日志文件的备份数量。
loglevel:Supervisor 的日志级别。
pidfile:Supervisor 进程 ID 文件的路径。
nodaemon:Supervisor 运行时是否使用守护进程模式。
minfds:Supervisor 运行时需要的最小文件描述符数。
minprocs:Supervisor 运行时需要的最小进程数。
[rpcinterface:supervisor] 部分:

supervisor.rpcinterface_factory:Supervisor RPC 接口的实现类。
[supervisorctl] 部分:

serverurl:Supervisor RPC 服务器的 URL。
username:Supervisor RPC 用户名。
password:Supervisor RPC 密码。
[program:x] 部分(x 表示程序名称):

command:程序启动命令。
autostart:是否随着 Supervisor 启动而启动。
autorestart:是否自动重启程序。
startsecs:程序启动后等待的秒数,超过此时间仍未成功启动则被认为启动失败。
startretries:最多尝试启动的次数。
exitcodes:程序退出时被认为是正常退出的返回码列表。
stopsignal:停止程序时使用的信号。
stopwaitsecs:停止程序时等待的秒数,超过此时间仍未成功停止则被认为停止失败。
user:程序运行时使用的用户名。
directory:程序的工作目录。
environment:程序运行时的环境变量。environment=VAR1=value1,VAR2=value2,VAR3=value3
stdout_logfile:标准输出日志文件路径。
stdout_logfile_maxbytes:标准输出日志文件的最大大小。
stdout_logfile_backups:标准输出日志文件的备份数量。
stderr_logfile:标准错误日志文件路径。
stderr_logfile_maxbytes:标准错误日志文件的最大大小。
stderr_logfile_backups:标准错误日志文件的备份数量。