正确离线安装supervisor

简介: supervisor是一个用python语言编写的进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisor监听到进程死后,可以很方便的让进程自动恢复,不再需要程序员或系统管理员自己编写代码来控制。

supervisor简介

supervisor是一个用python语言编写的进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisor监听到进程死后,可以很方便的让进程自动恢复,不再需要程序员或系统管理员自己编写代码来控制。

supervisor 会涉及三个重要的命令

  • supervisord

可以理解成supervisor的服务端

运行supervisor时会启动一个进程supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启

  • supervisorctl

可以理解成supervisor的客户端

supervisorctl是命令行管理工具,可以用如下命令来进行子进程的管理,如:

image.png

  • echo_supervisord_conf

用来生成默认的配置文件,一般生成默认文件为 supervisor.conf

supervisor安装的前期准备(全部使用压缩包的方式)

supervisor是用python写的运行在linux下的进程管理工具,安装supervisor的时候依赖 python的一些包,它依赖:python、setuptools、meld3

1、python安装

可以参考此处安装python:www.cnblogs.com/wintest/p/1…

下载python链接:www.python.org/ftp/python/

下载相应的压缩包,如:wget www.python.org/ftp/python/…


tar -xvf Python-3.6.8.tgz

2、setuptools安装

pypi.python.org/pypi/setupt…

下载压缩包,用tar解压压缩包,安装,如


tar -zxvf setuptools-0.6c11.tar.gz cd setuptools-0.6c11 python setup.py install

3、meld3安装

pypi.python.org/pypi/meld3

wget pypi.python.org/packages/45…


tar -zxvf meld3-1.0.2.tar.gz cd meld3-1.0.2 python setup.py install

4、supervisor安装


tar -zxvf supervisor-3.3.1.tar.gz cd supervisor-3.3.1 python setup.py install

此处 supervisor安装后会生成我们关心的如下几个可执行程序:

  • supervisord 路径
    supervisord:  /usr/local/bin/supervisord
  • supervisorctl 路径
    supervisorctl:  /usr/local/bin/supervisorctl
  • echo_supervisord_conf 路径
    echo_supervisord_conf:  /usr/local/bin/echo_supervisord_conf

image.png

验证supervisor是否安装成功

bash

复制代码

supervisorctl --help

image.png

preview

supervisor配置

创建必要目录和文件

  • 创建 /etc/supervisor 目录
    mkdir /etc/supervisor
  • echo_supervisord_conf 生成supervisord.conf
    echo_supervisord_conf  > /etc/supervisor/supervisord.conf

修改/etc/supervisor/supervisord.conf文件内容

  • 将unix_http_server 下的 file 路径改掉,如下:
    [unix_http_server] file=/var/run/supervisor.sock  ; (the path to the socket file)

image.png

  • 将supervisord 下的logfile 路径 和 pidfile 路径 改掉,如下:
    [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

image.png

  • 将include 下的 files 路径改掉,如下:
    [include] files = conf.d/*.conf

根据上述修改的路径,创建相应的文件和添加权限

创建文件:


touch /var/run/supervisor.sock touch /var/log/supervisord.log touch /var/run//supervisord.pid mkdir /etc/supervisor/conf.d 添加权限 chmod 777 /var/run chmod 777 /var/log

编写自己需要监控的子进程程序

子程序配置文件的编写

/etc/supervisor/conf.d 目录下创建自己的子进程配置文件,如:

/etc/supervisor/conf.d 创建文件 test.conf


[program:test] process_name=%(program_name)s_%(process_num)02d command= go run main.go         # 运行命令 directory=/home/qb/              # 运行文件目录 autostart=true                   # 自动启动 autorestart=true                 # 自动重新启动 user=root                       # 哪一个用户执行 redirect_stderr=true             #重定向错误

image.png子程序的编写

其中上述 main.go 是我临时写的一个demo程序,简单循环1秒钟写入字符串到文件中(写到文件中是为了便于查看效果),如:



package mainimport (   "fmt"   "os/exec"   "time")func main() {     for {               cmd := exec.Command("/bin/bash", "-c", `echo 222 >> a.txt`)               stdout, err := cmd.StdoutPipe()              if err != nil {                    fmt.Printf("Error:can not obtain stdout pipe for command:%s\n", err)                 return        }       //执行命令       if err := cmd.Start(); err != nil {         fmt.Println("Error:The command is err,", err)                return         }       fmt.Println(stdout)   time.Sleep(time.Second * time.Duration(1))   }
启动superviosr

1、unlink一下


unlink /var/run/supervisor.sock

2、启动supervisor:


supervisord -c /etc/supervisor/supervisord.conf

3、查看程序运行状态


supervisorctlstatus

查看效果

image.png

子程序是 每间隔1秒钟 向 a.txt文件中写入字符串 222

image.png

进一步测试

  • 删掉子进程,测试supervisor是否会拉起子进程

image.png

img

将supervisor加入到开启启动服务中

1、写服务文件


vim /usr/lib/systemd/system/supervisord.service

supervisord.service


[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/local/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/local/bin/supervisorctl shutdown ExecReload=/usr/local/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target

2、使能服务


systemctl enable supervisord

3、验证是否使能成功

systemctl is-enabled supervisord

出现enable说明成功

image.png

4、重启机器验证 supervisor是否随开机

常用命令提示

arduino


service supervisord start #启动程序 service supervisord stop #停止程序 service supervisord status #查看状态 supervisorctl shutdown #关闭所有任务 supervisorctl stop|start 子程序名字 #启动或停止服务 supervisorctl status #查看所有任务状态

异常情况提供参考

切记一定要把目录名,文件名 全部写正确,不要自己坑了自己!!

1、error: , [Errno 111] Connection refused: file: /usr/lib64/python2.6/socket.py line: 567

解决方式: 使用指定配置文件的方式处理


supervisord -c /etc/supervisor/supervisord.conf

2、初始化配置文件 echo_supervisord_conf 报错

解决方式:手动创建配置文件路径


mkdir /etc/supervisorecho_supervisord_conf > /etc/supervisor/supervisord.conf

3、操作supervisorctl 查看没有test进程

解决方式:/etc/supervisor/supervisord.conf 中 打开 include 模块

image.png

4、Unlinking stale socket /tmp/supervisor.sock

解决方式:


unlink /var/run/supervisor.sock

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
SQL 安全 测试技术
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
1074 0
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
|
7月前
|
网络协议 定位技术 网络安全
IPIP.NET-IP地理位置数据
IPIP.NET 是一家专注于 IP 地理位置数据的提供商,基于 BGP/ASN 数据与全球 800+ 网络监测点技术,提供高精度的 IPv4 和 IPv6 定位服务。其核心服务包括地理位置查询、详细地理信息和网络工具等,广泛应用于网络安全、广告营销、CDN 优化等领域。数据覆盖全球,支持多语言,每日更新确保实时性。IPIP.NET 提供 API 接口、离线数据库及多种语言 SDK,方便开发者集成使用。
1252 0
|
9月前
|
人工智能 文字识别 自然语言处理
保单AI识别技术及代码示例解析
车险保单包含基础信息、车辆信息、人员信息、保险条款及特别约定等关键内容。AI识别技术通过OCR、文档结构化解析和数据校验,实现对保单信息的精准提取。然而,版式多样性、信息复杂性、图像质量和法律术语解析是主要挑战。Python代码示例展示了如何使用PaddleOCR进行保单信息抽取,并提出了定制化训练、版式分析等优化方向。典型应用场景包括智能录入、快速核保、理赔自动化等。未来将向多模态融合、自适应学习和跨区域兼容性发展。
|
9月前
|
机器学习/深度学习 编解码 自然语言处理
王炸组合,阶跃星辰SOTA模型Step-Video和Step-Audio模型开源
王炸组合,阶跃星辰SOTA模型Step-Video和Step-Audio模型开源
323 0
|
编译器 API C#
技术心得记录:深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解
技术心得记录:深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解
|
jenkins Java 应用服务中间件
代码覆盖率工具-jacoco环境搭建分享
Web多个服务在docker中启动,服务之间存在依赖关系,启动端口号以及依赖的镜像关系都配置在docker-compse.yml文件中。需要借助代码覆盖率工具,对后端Java代码进行覆盖率统计。
代码覆盖率工具-jacoco环境搭建分享
|
Unix Linux 网络安全
python中连接linux好用的模块paramiko(附带案例)
该文章详细介绍了如何使用Python的Paramiko模块来连接Linux服务器,包括安装配置及通过密码或密钥进行身份验证的示例。
723 1
|
Ubuntu 网络协议 关系型数据库
|
安全 Java Apache
Java中的单点登录(SSO)解决方案
Java中的单点登录(SSO)解决方案
|
监控 Ubuntu Python
Supervisor离线安装及使用
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警
419 0