Linux下进程守护Supervisor搭建

news2024/11/17 13:22:56

简介:Supervisor是在linux上的进程管理员,是一个管理工具。当进程停止的时候Supervisor能够自动启动它,可以运行在各种类unix的机器上,supervisor是使用python开发的一套通用的进程管理工具,能够把普通脚本、命令行进程变成后台的daemon,并监控状态,实现自动重启,并提供可视化管理界面。

背景:自动化管理进程、高并发测试、运维环境搭建。

一、运行环境:

Windows下 VMware/Ubuntu-20 x64 系统
python:系统自带的 Python 3.8.10
php:php-7.4(可以不用装php,仅用来测试)

二、安装程序:

1、安装 setuptools。setuptools用来管理python的包依赖,是python distutisde工具的增强包。python3.8是环境中安装的版本。

 在 Python编程语言的 软件仓库 搜索下载setuptools:

sudo wget https://files.pythonhosted.org/packages/fd/53/e5d7ae40d03e4ed20b7cba317cf9c0c97097c8debb39f9d72d182a6578a2/setuptools-67.7.2.tar.gz
sudo tar zxvf setuptools-67.7.2.tar.gz
cd setuptools-67.7.2
sudo python setup.py build
sudo python setup.py install

sudo apt-get install python3.8-distutils

2、使用 get-pip 安装 pip。(有时下载比较慢可能会失败,过会儿重试几次。)

sudo wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

安装完成后,输入 pip --version 查看版本。

3、安装 Supervisor。

sudo pip install supervisor supervisor

安装完成后,输入 echo_supervisord_conf 查看安装结果。

 

三、Supervisor 软件配置

1、创建目录,初始化配置文件

sudo mkdir /usr/supervisor
sudo chmod -R 777 /usr/supervisor
sudo echo_supervisord_conf > /usr/supervisor/supervisord.conf

2、为了便于管理,创建文件夹单独存放每个进程管理配置

sudo mkdir /usr/supervisor/supervisord.d/

3、修改系统配置文件

sudo vim /usr/supervisor/supervisord.conf
3.1 包含上一步 supervisord.d/ 文件夹的所有配置
[include]
files = /usr/supervisor/supervisord.d/*.conf

3.2 去掉 [inet_http_server] 的注释,启用 web 进程管理器

4、添加进程管理配置

4.1 添加第一个配置(单进程)

cd /usr/supervisor/supervisord.d
sudo touch supervisor_test_one.conf
sudo chmod 777 supervisor_test_one.conf
sudo vim supervisor_test_one.conf

添加一下内容:

[program:test_one]
command=php /www/html/test/one.php ; 被监控的进程路径
priority=1                    ; 数字越高,优先级越高
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout

 4.2 编写一个测试脚本,创建 /www/html/test/ 目录并创建 one.php 文件,添加以下内容:

<?php

$id = time();
while(1){
	file_put_contents('/www/html/test/logs.txt','task-one:'.$id .' - '.date('Y-m-d H:i:s').PHP_EOL,FILE_APPEND);
	sleep(1);
}

?>

 4.3 启动 supervisord

supervisord -c /usr/supervisor/supervisord.conf

4.4 查看监听

lsof -i:9001

到这一步,就可以通过 http://localhost:9001/ 查看 supervisor 的web界面了,只不过目前还没有加入任何监控程序。

 

新创建的虚拟机没有安装php,安装一下:

sudo apt install php

4.5 重启 supervisord 进程

查看进程 lsof -i:9001

Kill进程  kill -9 15500

 启动进程 supervisord -c /usr/supervisor/supervisord.conf

supervisord -c /usr/supervisor/supervisord.conf

查看日志文件:

4.5 supervisord进程管理

supervisorctl -c /usr/supervisor/supervisord.conf

输入supervisor> reload | stop | start | status

 

 4.6 多进程配置

同级目录下创建 supervisor_test_two.conf 文件,输入以下内容:

[program:test_two]
command=php /www/html/test/one.php ; 被监控的进程路径
priority=1                    ; 数字越高,优先级越高
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout
numprocs=40                   ; 启动几个进程 
process_name=进程名称-%(process_num)d   ; numprocs>1必须设置不同的进程名
supervisorctl -c /usr/supervisor/supervisord.conf 

输入supervisor> reload

输入 supervisor> start all

查看进程:

4.7 更多例子

;tms 默认 default mq配置服务器tms.ordersys.hexiao.queue队列消费脚本进程管理
[program:MqReceive-default-tms.ordersys.hexiao.queue]
command=/usr/bin/php /mnt/TMS2/appdal1/index.php /tracksys/console/MqReceive/run default tms.ordersys.hexiao.queue
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/wwwlogs/supervisor_hexiao_stdout.log
stderr_logfile=/home/wwwlogs/supervisor_hexiao_stderr.log
numprocs=6
process_name=MqReceive-default-tms.ordersys.hexiao.queue-%(process_num)d

注意:

(1)numprocs 表示启动进程数,当numprocs>1时,必须给每个进程设置不同的进程名称,所以此处设置 process_name=进程名称-%(process_num)d。

(2)修改配置后 必须执行 supervisor> relaod 才会生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/503377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一起Talk Android吧(第五百四十三回:如何实现流水动画)

文章目录 概念介绍实现方法平移动画逐帧动画 经验总结 各位看官们大家好&#xff0c;上一回中咱们说的例子是"无进度值ProgressBar",本章回中介绍的例子是" 如何实现流水动画"。闲话休提&#xff0c;言归正转&#xff0c;让我们一起Talk Android吧&#x…

Linux命令·ss

ss是Socket Statistics的缩写。顾名思义&#xff0c;ss命令可以用来获取socket统计信息&#xff0c;它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息&#xff0c;而且比netstat更快速更高效。 当服务器的socket连接数量变得非常…

triton 疑难手册

config.pbtxt 配置参数手册 backend或platform参数用于指示nvidia triton用对应的backend加载模型参数&#xff0c;它的使用示例如下&#xff1a; name: "xxx" platform: "pytorch_libtorch"max_batch_size: 8 input [ {name: "input0"data_ty…

算法加密与解密、字符编码与字符集

加密算法 加密保证数据不会被窃取或者修改 可逆和不可逆加密 区分在于加密后的结果是否可以还原 可逆加密&#xff1a;安全传输数据时使用(如jwt中的数据) AES:流加密 DES&#xff1a;块加密 RSA HS256 不可逆加密&#xff1a;同一个文件或内容每次加密的结果一…

GL绘制自定义线条2_手写曲线应用贝塞尔曲线

上一篇文章的曲线是由触摸点直接生成的&#xff0c;但触摸点并非连续的&#xff0c;而是离散的&#xff0c;而且屏幕触摸点采样的间隔时间其实不短&#xff0c;因此如果单纯只用触摸点生成OpenGL触摸曲线&#xff0c;在高速书写时会导致曲线看起来就像多个线段合起来一样&#…

为何ChatGPT一出现让巨头们都坐不住?

近几个月来&#xff0c;ChatGPT都是当仁不让的舆论话题。 上一次AI在全球范围内引起轰动&#xff0c;还是谷歌的AI机器人AlphaGO下棋战胜围棋世界冠军的时候。 ChatGPT的出现&#xff0c;让国内外几乎所有的科技巨头都坐立不安。 2月1日&#xff0c;谷歌母公司Alphabet首席执…

C++跨平台“点绘机” 代码解读

前言 球球大作战可以自定义皮肤&#xff0c;用画刷绘制。 想着用软件来绘制。 初次尝试&#xff0c;没有达成最终目的&#xff0c;不过也有很大收获。 仓库链接&#xff1a;https://github.com/sixsixQAQ/dolphin 问题 这个半成品&#xff0c;已经有了基本结构了&#xff…

高德地图api 地理编码(地址-->坐标)geocoder.getLocation在官方可以测试出结果,下载代码到本地却用不了 问题解决

问题 高德地图api 地理编码&#xff08;地址-->坐标&#xff09;功能&#xff0c;通过输入 地址信息 得到 经纬度信息。geocoder.getLocation在官方可以测试出结果&#xff0c;下载代码到本地却用不了。 官方示例测试&#xff0c;可以从地址得到坐标 下载官方代码本地运行却…

常见注意力机制解析

1.Squeeze-and-Excitation&#xff08;SE&#xff09; SE的主要思想是通过对输入特征进行压缩和激励&#xff0c;来提高模型的表现能力。具体来说&#xff0c;SE注意力机制包括两个步骤&#xff1a;Squeeze和Excitation。在Squeeze步骤中&#xff0c;通过全局平均池化操作将输…

【2023年Mathorcup杯数学建模竞赛C题】电商物流网络包裹应急调运与结构优化--完整作品分享

1.问题背景 2.论文摘要 为了应对电商物流网络中物流场地和线路电商物流网络中物流场地和线路上货量波动的情况&#xff0c; 设计合理的物流网络调整方案以保障物流网络的正常运行。本文运用 0-1 整数规划模型&#xff0c;多目标动 态规划模型&#xff0c;给出了问题的结果。 针…

深入讲解eMMC简介

1 eMMC是什么 eMMC是embedded MultiMediaCard的简称&#xff0c;即嵌入式多媒体卡,是一种闪存卡的标准&#xff0c;它定义了基于嵌入式多媒体卡的存储系统的物理架构和访问接口及协议&#xff0c;具体由电子设备工程联合委员会JEDEC订立和发布。它是对MMC的一个拓展&#xff0…

redi缓存使用

1、缓存的特征 第一个特征&#xff1a;在一个层次化的系统中&#xff0c;缓存一定是一个快速子系统&#xff0c;数据存在缓存中时&#xff0c;能避免每次从慢速子系统中存取数据。 第二个特征&#xff1a;缓存系统的容量大小总是小于后端慢速系统的&#xff0c;不可能把所有数…

GAMES101 计算机图形学 | 学习笔记 (上)

目录 环境安装什么是计算机图形学物体上点的坐标变换顺序齐次坐标光栅化如何判定一个点在三角形内光栅化填充三角形示例代码光栅化产生的问题 采样不足&#xff08;欠采样&#xff09;导致锯齿抗锯齿滤波算法 环境安装 1. C中安装opencv库 2. C中安装eigen库 3. C中安装open…

ChatGPT调教指北,技巧就是效率!

技巧就是效率 很多人都知道ChatGPT很火很强&#xff0c;几乎无所不能&#xff0c;但跨越了重重门槛之才有机会使用的时候却有些迷茫&#xff0c;一时间不知道如何使用它。如果你就是把他当作一个普通的智能助手来看待&#xff0c;那与小爱同学有什么区别&#xff1f;甚至还差劲…

热乎的面经——踏石留印

⭐️前言⭐️ 本篇文章记录博主面试北京某公司所记录的面经&#xff0c;希望能给各位带来帮助。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论…

Origin如何绘制三维图形?

文章目录 0.引言1.使用矩阵簿窗口2.三维数据转换3.三维绘图4.三维曲面图5.三维XYY图6.三维符号、条状、矢量图7.等高线图 0.引言 因科研等多场景需要&#xff0c;绘制专业的图表&#xff0c;笔者对Origin进行了学习&#xff0c;本文通过《Origin 2022科学绘图与数据》及其配套素…

63.空白和视觉层级的实战应用

例如看我们之前的小网页&#xff1b; 这些标题的上下距离一样&#xff0c;这样让我们很容易对这些标题进行混淆&#xff0c;我们可以适当的添加一点空白 header, section {margin-bottom: 96px; }这样看上去似乎就好很多&#xff01; 除此之外&#xff0c;如我们之间学的空…

【line features】线特征

使用BinaryDescriptor接口提取线条并将其存储在KeyLine对象中&#xff0c;使用相同的接口计算每个提取线条的描述符&#xff0c;使用BinaryDescriptorMatcher确定从不同图像获得的描述符之间的匹配。 opencv提供接口实现 线提取和描述符计算 下面的代码片段展示了如何从图像中…

K8S相关核心概念

个人笔记&#xff1a; 要弄明白k8s的细节&#xff0c;需要知道k8s是个什么东西。它的主要功能&#xff0c;就是容器的调度--也就是把部署实例&#xff0c;根据整体资源的使用状况&#xff0c;部署到任何地方 注意任何这两个字&#xff0c;预示着你并不能够通过常规的IP、端口…

如何全面学习Object-C语言的语法知识 (Xmind Copilot生成)

网址&#xff1a;https://xmind.ai/login/ 登录后直接输入&#xff1a;如何全面学习Object-C语言的语法知识&#xff0c;就可以生成大纲 点击右上角的 按钮&#xff0c;可以显示md格式的问题&#xff0c;再点击生成全文&#xff0c;就可以生成所有内容了&#xff0c; 还有这个…