Supervisor(http://supervisord.org/)
是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
- 执行安装命令
yum install python-setuptools
easy_install pip
pip install supervisor
- 生成配置文件supervisord.conf
echo_supervisord_conf > /etc/supervisord.conf
- 编辑配置文件supervisord.conf
vim /etc/supervisord.conf
##在supervisord.conf添加以下内容
[include]
files = /etc/supervisord.d/*.conf
- 创建文件夹supervisord.d,修改supervisord.conf的相关配置地址
cd /etc
mkdir supervisord.d
vim /etc/supervisord.conf
[unix_http_server]
#注释原来的
#file=/tmp/supervisor.sock ; the path to the socket file
#修改指向新的地址
file=/etc/supervisord.d/supervisor.sock ; the path to the socket file
[supervisord]
#注释原来的
#logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
#修改指向新的地址
logfile=/etc/supervisord.d/supervisord.log ; main log file; default $CWD/supervisord.log
#修改指向新的地址
pidfile=/etc/supervisord.d/supervisord.pid ; supervisord pidfile; default supervisord.pid
[supervisorctl]
#注释原来的
#serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
#修改指向新的地址
serverurl=unix:///etc/supervisord.d/supervisor.sock ; use a unix:// URL for a unix socket
- 在/etc/supervisord.d下创建supervisord.pid,用于固定进程号
vim supervisord.pid
#输入一个进程号,保存退出
5865
- 在 /etc/supervisord.d/下创建自己的文,管理相关的进程(比如创建es.conf)
vim es.conf
[program:es6.2.4]
#路径
directory = /usr/local/elasticsearch-6.2.4/
#启动命令
command = su -c "/usr/local/elasticsearch-6.2.4/bin/elasticsearch" es
autostart = true
autorestart = true
user = root
redirect_stderr = true
#打印日志
stdout_logfile = /workspace/db-data/elasticsearch-6.2.4/logs/supervisor_es.log
保存退出。
- 启动命令
supervisord -c /etc/supervisord.conf
- 查看进程状态
supervisorctl status
启动/关闭/重启的命令:
supervisorctl stop|start|restart es6.2.4
关闭supervisor:
ps -ef | grep super,然后kill -9 进程号
注意:如果要添加修改配置文件,需要重启supervisor。supervisor主进程被kill后,各个被管理的进程也会继续运行,所以需要先关闭各个被管理的进行。