supervisor是一个进程管理工具当进程中断的时候supervisor能自动重新启动它同时它也是一个客户端/服务器系统允许用户在类unix操作系统上控制多个进程。supervisor是用Python开发的一套通用的进程管理程序能将一个普通的命令行进程变为后台daemon并监控进程状态异常退出时能自动重启。supervisor是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动这样只要在supervisor的配置文件中把要管理的进程的可执行文件的路径写进去即可。可实现当子进程挂掉的时候父进程可以准确获取子进程挂掉的信息的可以选择是否自己启动和报警。supervisor还提供了一个功能可以为supervisord或者每个子进程设置一个非root的user这个user就可以管理它对应的进程。supervisor进程管理服务组成supervisor主要包括以下四个核心部分组成supervisord这是supervisor服务的主要管理器运行 Supervisor 时会启动一个进程 supervisord它负责启动所管理的进程;并将所管理的进程作为自己的子进程来启动而且可以在所管理的进程出现崩溃时自动重启。supervisorctl这是supervisor服务的客户端命令行工具可以用来执行stop、start、restart等命令来对这些子进程进行管理。web Server这是supervisor服务的网页可视化界面可以通过web界面查看和控制进程状态简化了对操作命令的学习;xml-rpc interface服务与web ui的同一个http服务器提供一个xml-rpc接口可以用来询问和控制管理程序及其他运行的程序;supervisor服务运行环境说明supervisor可以运行在大多数类unix系统但是不能运行在任何windows系统supervisor运行在python环境中;可以在python2(2.7)版本上工作、python3(3.4)版本上工作、以及更高python版本上。进程管理服务部署进程管理服务安装过程安装过程第一步安装python工具[rootxiaoQ ~]# yum install -y python-pip安装过程第二步安装supervisor程序[rootxiaoQ ~]# pip install supervisor安装过程第三步核心确认supervisor是否安装成功[rootxiaoQ~]# echo_supervisord_conf -- 通过执行以上命令通过输出信息可以确认supervisor服务是否安装成功进程管理服务配置信息supervisor进程管理服务程序安装完毕后会在系统中生成两个主要的配置文件主进程配置文件/etc/supervisord.conf子进程配置文件/etc/supervisord.d/主进程配置文件信息解析子进程配置文件信息解析给需要管理的子进程(程序)编写一个配置文件放在/etc/supervisor.d/目录下以.ini作为扩展名;每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起;任意定义一个和脚本相关的项目名称的选项组例如/etc/supervisord.d/test.conf#项目名 [program:tomcat] #脚本目录 directory/opt/bin #脚本执行命令 command/usr/bin/python /opt/bin/test.py #supervisor启动的时候是否随着同时启动默认True autostarttrue #当程序exit的时候这个program不会自动重启,默认unexpected设置子进程挂掉后自动重启的情况有三个选项false,unexpected和true。如果为false的时候无论什么情况下都不会被重新启动如果为unexpected只有当进程的退出码不在下面的exitcodes里面定义的 autorestartfalse #这个选项是子进程启动多少秒之后此时状态如果是running则我们认为启动成功了。默认值为1 startsecs1 #脚本运行的用户身份 user test #日志输出 stderr_logfile/tmp/blog_stderr.log stdout_logfile/tmp/blog_stdout.log #把stderr重定向到stdout默认 false redirect_stderr true #stdout日志文件大小默认 50MB stdout_logfile_maxbytes 20MB #stdout日志文件备份数 stdout_logfile_backups 20子进程配置示例[program:test] directory/opt/bin command/opt/bin/test autostarttrue autorestartfalse stderr_logfile/tmp/test_stderr.log stdout_logfile/tmp/test_stdout.log #user test进程管理服务命令使用在使用supervisor进程管理工具时也会经常用到一些命令对工具进行管理控制把es换成all可以管理配置中的所有进程。直接输入supervisorctl进入supervisorctl的shell交互界面此时上面的命令不带supervisorctl可直接使用。进程管理服务启动应用使用supervisor进程管理命令之前需要先启动supervisord启动方法如下# 利用命令启动服务程序 supervisord -c /etc/supervisord.conf # 利用systemd管理启动服务 systemctl start supervisord.service -- 启动supervisor并加载默认配置文件 systemctl enable supervisord.service -- 将supervisor加入开机启动项 # 确认服务是否启动 ps -ef|grep supervisor root 12931 1 0 18:16 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf supervisorctl status -- 执行以上命令信息输出信息为空表示没有配置项目信息但服务部署过程基本完成进程管理服务进程进程管理应用实战-Nginxsupervisor服务项目创建为了演示实现supervisor服务的功能可以临时部署一个nginx服务程序对nginx服务的进程进行监控;下载安装nginx程序包yum install -y nginxsupervisor服务项目配置修改上面说明的supervisord.conf文件文件最后两行配置信息的注释取消掉也就是去掉分号信息[include] files supervisord.d/*.ini -- 指定需要加载的程序项目配置文件信息创建一个测试使用的服务配置文件nginx.ini[rootxiaoQ supervisord.d]# cat nginx.ini [program:nginx] directory/usr/sbin/ command/usr/sbin/nginx -g daemon off; autostarttrue autorestarttrue startsecs3 userroot stderr_logfile/tmp/nginx_stderr.log stdout_logfile/tmp/nginx_stdout.logsupervisor服务重新启动编写完supervisor管理的进程服务配置文件后可以使supervisor服务重新启动加载编写的服务配置文件;# 重启supervisor服务程序 systemctl restart supervisord.service # 检查对应管理的服务程序是否启动 [rootdocker-server supervisord.d]# ps -ef|grep nginx root 13338 13317 0 22:12 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon off; nginx 13339 13338 0 22:12 ? 00:00:00 nginx: worker process nginx 13340 13338 0 22:12 ? 00:00:00 nginx: worker process nginx 13341 13338 0 22:12 ? 00:00:00 nginx: worker process nginx 13342 13338 0 22:12 ? 00:00:00 nginx: worker process通过web界面查看服务进程运行情况supervisor服务修复测试尝试杀掉nginx服务程序模拟企业服务异常情况崩溃查看supervisor服务是否能够自动重启nginx程序# 尝试模拟杀死进程 [rootdocker-server supervisord.d]# kill 13338 -bash: kill: (13338) - No such process # 查询nginx服务进程是否可以自动重启 [rootdocker-server supervisord.d]# ps -ef|grep nginx root 13346 13317 0 22:16 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon off; nginx 13347 13346 0 22:16 ? 00:00:00 nginx: worker process nginx 13348 13346 0 22:16 ? 00:00:00 nginx: worker process nginx 13349 13346 0 22:16 ? 00:00:00 nginx: worker process nginx 13350 13346 0 22:16 ? 00:00:00 nginx: worker process -- 可以根据重启服务进程号信息可知nginx服务已经实现了重启进程管理应用实战-tomcatsupervisor服务项目创建为了演示实现supervisor服务的功能可以临时部署一个tomcat服务程序对tomcat服务的进程进行监控;下载安装jdk8程序包yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel设置配置jdk8环境变量# 编写环境变量配置文件 vim /etc/profile.d/java8.sh export JAVA_HOME$(dirname $(dirname $(readlink $(readlink $(which javac))))) export PATH$PATH:$JAVA_HOME/bin export CLASSPATH.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar # 加载环境变量配置信息 source /etc/profile.d/java8.sh # 检查环境变量是否生效 echo $JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64 或者 printenv JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64检查jdk8程序包是否安装成功[rootxiaoQ ~]# java -version openjdk version 1.8.0_352 OpenJDK Runtime Environment (build 1.8.0_352-b08) OpenJDK 64-Bit Server VM (build 25.352-b08, mixed mode) [rootxiaoQ ~]# javac -version javac 1.8.0_352下载安装tomcat程序[rootxiaoQ ~]# cd /usr/local/ [rootxiaoQ ~]# rz -y -- 将从官方下载的tomcat程序包上传此目录中 # 解压tomcat程序压缩包 [rootxiaoQ local]# tar xf apache-tomcat-8.5.83.tar.gzsupervisor服务项目配置修改上面说明的supervisord.conf文件文件最后两行配置信息的注释取消掉也就是去掉分号信息[include] files supervisord.d/*.ini -- 指定需要加载的程序项目配置文件信息创建一个测试使用的服务配置文件nginx.ini[rootxiaoQ supervisord.d]# cat tomcat.ini [program:tomcat] stopasgrouptrue userroot environmentJAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64,JAVA_BIN/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/bin -- 指定linux环境Java的安装位置如果忘记了在命令行输入echo $JAVA_HOME来得到 directory/usr/local/apache-tomcat-8.5.83 -- 指定tomcat程序存放路径信息 command/usr/local/apache-tomcat-8.5.83/bin/catalina.sh run -- 指定tomcat启动脚本路径信息 autostarttrue autorestarttrue startsecs60 userroot stderr_logfile/usr/local/apache-tomcat-8.5.83/logs/catalina.err stdout_logfile/usr/local/apache-tomcat-8.5.83/logs/catalina.outsupervisor服务重新加载编写完supervisor管理的进程服务配置文件后可以使supervisor服务加载新的服务进程识别新编写的服务配置文件;[rootxiaoQ apache-tomcat-8.5.83]# supervisorctl update tomcat: added process group通过web界面查看服务进程运行情况
企业数字化 ERP 产品动态
相关推荐
MySQL复杂查询与Union操作 在日常开发中,数据查询是数据库操作的核心部分,尤其是在处理多表数据时,单一的查询方式无法满足业务的复杂需求。因此,掌握复杂查询技术变得至关重要。
本教程将介绍如何使用UNION操作进行多表数据合并查询,并通过CASE语句实现条件选择。通过对这些技巧的学习,可以轻松处… · 2026/9/27 7:31:34
SEO专员是干什么的?源码下载背后的技术真相与避坑指南 SEO专员是干什么的?源码下载背后的技术真相与避坑指南 你是不是也被那些花里胡哨的模板网站坑过?看着页面挺热闹,但打开速度慢如蜗牛,内容千篇一律,连搜索引擎都懒得给你收录。更扎心的是,你以为买了套源码就能高枕无忧,结果一查发现代码里全是后门… · 2026/9/27 7:31:28
elsa-core 中的 speckit-plan:从特性规格到实施计划的 AI 规划工作流实战指南 后端工作流自动化流程编排低代码 【免费下载链接】elsa-core The Workflow Engine for .NET 项目地址: https://gitcode.com/gh_mirrors/el/elsa-core 点击查看 免费下载 本指南围绕 elsa-core 仓库中 .agents/skills/speckit-plan/SKILL.md 所定义的实施规划技能展… · 2026/9/27 8:15:29
GitHub Desktop 发布规划与排期全流程:从 Issue、里程碑到 Release 的工程化实践 开发工具桌面应用 【免费下载链接】desktop Fork of GitHub Desktop to support various Linux distributions 项目地址: https://gitcode.com/gh_mirrors/des/desktop 点击查看 免费下载 本文以 GitHub Desktop(desktop/desktop 开源仓库,本… · 2026/9/27 8:15:23
秋季膏方与传统药膳数字化归档 RAG 体系:两百料古方与现代禁忌实战 秋季膏方与传统药膳数字化归档 RAG 体系:两百料古方与现代禁忌实战在中国传统中医药食同源的宝库中,江南膏滋与时令药膳传承了数千年,凝结了历代名医调和阴阳、固护元气的绝妙智慧。
然而,传统的纸质药膳手抄本与古方善本… · 2026/9/27 8:15:16
AI爬虫抓不到网页怎么办?从robots.txt到SSR的完整排查与配置指南 你的网站在Google里能搜到,但用户在ChatGPT、Perplexity里问同样的问题,答案里从来没有你。打开服务器日志一看,GPTBot的请求记录是零。这不是内容质量问题,而是AI爬虫根本没读到你的页面,或者读了之后发现什么都没有。… · 2026/9/27 8:14:58
搞懂公司网站建设需要的材料,别再被坑了 搞懂公司网站建设需要的材料,别再被坑了 很多老板一上来就问建站报价,结果做出来的网站丑得像90年代网吧主页。模板网站太丑不够用,更别提转化了。别急着比价,先看看你手里有没有这些“硬通货”。 1. 公司核心资料清单:别只给个Logo… · 2026/9/27 8:14:34
open-pencil 工具栏响应式分页状态:useToolbarState 源码解析与实战 前端桌面应用AI 应用MCP 服务 【免费下载链接】open-pencil AI-native design editor. Open-source Figma alternative. 项目地址: https://gitcode.com/gh_mirrors/op/open-pencil 点击查看 免费下载 useToolbarState 是 open-pencil(AI-native 设计编… · 2026/9/27 8:14:28
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01