supervisor进程管理工具
1 supervisor介绍
1、什么是supervisor
1. Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。、
2. 作用:它可以很方便的监听、启动、停止、重启一个或多个进程。
3. 用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起
4. 很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
5. 说白了,它真正有用的功能是俩个将非daemon(守护进程)程序变成deamon方式运行对程序进行监控,当程序退出时,可以自动拉起程序。
6. 但是它无法控制本身就是daemon的服务。
2、supervisor安装与基本使用
1)supervisor安装
[root@linux-node4 aaa]# yum install -y supervisor # 使用yum安装supervisor,安装完成与两个重要文件 /etc/supervisord.conf # supervisor配置文件 /etc/supervisord.d/ # 子进程配置文件路径 [root@linux-node4 aaa]# vim /etc/supervisord.conf # 配置supervisor主配置文件 [inet_http_server] ; HTTP服务器,提供web管理界面 port=*:9001 ; Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性 username=user ; 登录管理后台的用户名 password=123 ; 登录管理后台的用户名
2)配置测试进程(/etc/supervisor.d/)
1)子进程配置文件:需要管理的子进程都可放到这个文件夹里 [root@linux-node4 aaa]# vim /etc/supervisord.d/test.ini [program:test] ; 项目名 directory=/tmp/ ; 脚本路径 command =uwsgi --ini test.ini ; 启动命令,可以看出与手动在命令行启动的命令是一样的 autostart = false ; 在 supervisord 启动的时候也自动启动 user=root ; 脚本运行的用户身份 startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了 startretries = 3 ; 启动失败自动重试次数,默认是 3 autorestart = true ; 程序异常退出后自动重启 redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB stdout_logfile = /root/js_back_uwsgi.log ; 日志输出位置 stderr_logfile = /root/js_back_err.log
2)测试脚本 [root@linux-node4 aaa]# vim /tmp/test.ini [uwsgi] chdir = /tmp module = test.wsgi master = true processes = 3 socket = 0.0.0.0:8002 vacuum = true pythonpath = /usr/bin/python3 pidfile = /tmp/js_back.pid #注释掉daemonize模式,因为Supervisor无法控制守护进程服务 #daemonize = /root/js_back/uwsgi.log
3)演示使用supervisor管理程序
[root@linux-node1 supervisord.d]# supervisord -c /etc/supervisord.conf # 启动supervisor [root@linux-node1 supervisord.d]# ps -ef | grep supervisor # 查看supervisor是否允许 [root@linux-node1 tmp]# supervisorctl status # 查看supervisor管理的所有进程状态 [root@linux-node1 supervisord.d]# supervisorctl restart test # 启动test程序 [root@linux-node1 supervisord.d]# supervisorctl stop all # 停止所有程序
4)supervisor常用命令
[root@linux-node1 tmp]# supervisorctl status # 查看supervisor管理所有进程的状态 [root@linux-node1 tmp]# supervisorctl stop es # 停止名称es程序(如果停止所有换成all) [root@linux-node1 tmp]# supervisorctl start es # 启动项目名称es程序 [root@linux-node1 tmp]# supervisorctl restart # 重启项目名称es程序 [root@linux-node1 tmp]# supervisorctl update # 配置文件修改后使用该命令加载新的配置 [root@linux-node1 tmp]# supervisorctl reload # 重新启动配置中的所有程序
3、在页面访问