supervisor使用
使用场景
1. 自己写的程序,没有启动脚本
2. 程序运行后,得用nohup进行后台运行以及日志输出
3. 一台服务器里面有多个程序,而且有优先级
上述场景下对应的好处:
1. 帮助你拥有启动和关闭的操作接口
2. 日志除了stdout显示之外,还可以输出到指定文件
3. 几个程序运行在一个节点里面,可以进行优先级调整
安装:
1 2 | yum install epel-release -y yum install supervisor -y |
supervisor的常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | supervisorctl status //查看所有进程的状态 supervisorctl stop msyql //停止msyql supervisorctl start msyql //启动msyql supervisorctl restart msyql //重启msyql supervisorctl reload //载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程; supervisorctl update //根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启; 如果修改了 supervisorctl shutdown //停止supervisor进程 supervisord -c supervisor.conf 通过配置文件启动supervisor supervisorctl -c supervisor.conf status 查看supervisor的状态 supervisorctl -c supervisor.conf reload 重新载入配置文件 更新后可以选择重新载入 supervisorctl -c supervisor.conf start [all] | [appname] 启动指定/所有 supervisor管理的程序进程 supervisorctl -c supervisor.conf stop [all] | [appname] 关闭指定/所有 supervisor管理的程序进程 supervisorctl -c /etc/supervisord.conf shutdown 停止supervisor进程 |
supervisor管理mysql
1 2 3 | [program:mysql] command=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/mydata --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/mydata/localhost.localdomain.err --pid-file=/mydata/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306 user=mysql |
supervisor管理nginx
1 2 3 4 5 6 7 8 9 10 | command=/usr/local/nginx/sbin/nginx -g "daemon off;" ;启动服务的command autostart = true ;在supervisord启动的时候这个服务也自动启动 startsecs = 5 ;启动5s后没有异常退出,就认为正常启动了 autorestart = true ;程序异常退出后自动重启 startretries = 3 ;启动失败几次之后就比启动了 user = root ;以那个用户的身份启动这个服务 redirect_stderr = true ;把stderr重定向到stdout,默认 false stdout_logfile_maxbytes = 20MB ;stdout日志的大小 stdout_logfile_backups = 20 ;stdout日志保留多少份 stdout_logfile = / var /log/supervisor/nginx.log ;日志文件存放的位置 |
supervisor管理php
1 2 3 4 5 6 7 8 9 10 11 12 13 | [program:php-fpm] command=/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.conf --pid /usr/local/php/ var /run/php-fpm.pid autostart= true user=root autorestart= true exitcodes=0,2,70 stopsignal=QUIT stopwaitsecs=2 startretries=5 redirect_stderr= true stdout_logfile=/ var /log/supervisor/php-fpm.log 需要注意使用supervisor监护进程时,被监护的进程不能是守护进程。php需要修改/usr/local/php/etc/php-fpm.conf配置daemonize = no |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)