supervisor系列:2、运行supervisor

2023-10-30

supervisor系列:2、运行supervisor



本节在解释如何运行 supervisordsupervisorctl命令时引用 BINDIR。这是Python安装配置的" bindir "目录。例如,通过 ./configure ——prefix=/usr/local/py; make; make install的python安装时, BINDIR应该是 /usr/local/py/bin。不同平台上的Python解释器使用不同的 BINDIR。如果你不知道 setup.py install的输出在哪里,请查看它。

1. 添加一个程序

supervisord将为您做任何有用的事情之前,您需要在其配置中添加至少一个program段。program段将定义在调用supervised命令时运行和管理的程序。要添加程序,您需要编辑supervisord.conf文件。

要运行的最简单的程序之一是UNIX cat程序。下面显示的program段将在启动supervisord进程时运行cat

[program:foo]
command=/bin/cat

这个节可以剪切并粘贴到supervisord.conf文件中。这是最简单的程序配置,因为它只命名一个命令。程序配置部分有许多其他配置选项,这里没有显示。更多信息请参见[program:x]设置部分

2. 运行supervisord

要运行supervisord,运行$BINDIR/supervisord。生成的进程将自己守护并与终端分离。它将操作日志默认保存在$CWD/supervisor.log

你可以在前台通过在命令行中传递-n标志来启动supervisord可执行文件。这对于调试启动问题很有用。

警告:

supervisord启动时,它将在默认位置(包括当前工作目录)中搜索配置文件。如果您具有安全意识,您可能希望在指定配置文件绝对路径的supervisord命令后指定一个" -c "参数,以确保某人不会欺骗您从包含流氓的supervisord.conf文件的目录中运行supervisor。当不带-c参数的supervisor作为root启动时,会发出一个警告。

如果要改变supervisord控制的程序集,请编辑supervisor.conf文件并kill -HUP或重启supervisord程序。这个文件有几个示例程序定义。

supervised命令接受许多命令行选项。这些命令行选项中的每一个都覆盖配置文件中的任何等价值。

2.1 supervisord命令行配置

-c FILE, --configuration=FILE supervisord配置文件的路径
-n, --nodaemon 前台运行supervisord
-s, --silent 没有指向stdout(标准输出)的输出
-h, --help 显示supervisord的帮助信息
-u USER, --user=USER UNIX用户名或数字用户id。如果supervisor是以root用户启动的,请在启动过程中尽快将setuid设置为这个用户
-m OCTAL, --umask=OCTAL 表示umask的八进制数字(例如022),supervisord启动后应该使用它。
-d PATH, --directory=PATH 当supervisord作为守护进程运行时,在守护进程之前cd到这个目录。
-l FILE, --logfile=FILE 用作supervisord活动日志的文件名路径。
-y BYTES, --logfile_maxbytes=BYTES 在循环发生之前,supervisor活动日志文件的最大大小。该值是后缀的乘积,例如“1”是一个字节,“1MB”是1兆字节,“1GB”是1g字节。
-z NUM, --logfile_backups=NUM 要保留的supervisord活动日志的备份副本数量。每个日志文件的大小为logfile_maxbytes
-e LEVEL, --loglevel=LEVEL supervisor应该写入活动日志的日志级别。有效的级别是tracedebuginfowarnerrorcritical
-j FILE, --pidfile=FILE supervisord应该写入pid文件的文件名。
-i STRING, --identifier=STRING 由各种客户端ui为这个supervisor程序实例公开的任意字符串标识符。
-q PATH, --childlogdir=PATH 一个目录的路径(它必须已经存在),supervisor将在其中写入其AUTO模式的子进程日志。
-k, --nocleanup 防止supervisord在启动时执行清理(删除旧的AUTO进程日志文件)。
-a NUM, --minfds=NUM 在supervisord成功启动之前必须可用的文件描述符的最小数目。
-t, --strip_ansi 从所有子日志进程中剥离ANSI转义序列。
-v, --version 将supervisord版本号打印到stdout并退出。
–profile_options=LIST 用于分析的逗号分隔选项列表。使supervisord在profiler下运行,并根据选项输出结果,选项是以下逗号分隔的列表:cumulativecallscallers。如cumulative,callers
–minprocs=NUM 在supervisord进程成功启动之前,可用的OS进程槽的最小数目

3. 运行supervisorctl

执行$BINDIR/supervisorctl命令启动supervisorctl。您将看到一个shell,它将允许您控制当前由supervisord管理的进程。在提示符处键入“help”以获得所支持的命令的相关信息。

当使用命令行参数调用时,可以使用“一次性”命令调用supervisorctl可执行文件。例如:supervisorctl stop all。如果命令行中有参数,它将阻止交互shell被调用。相反,该命令将被执行,并且supervisorctl将退出,其代码为0表示成功或运行,非0表示错误。举个例子:supervisorctl status all将返回非零,如果任何单个进程没有运行的话。

如果在交互式模式下对需要身份验证的supervisord调用supervisorctl,您将被要求身份验证凭据。

3.1 supervisorctl命令行配置

-c, --configuration 配置文件路径(默认为/etc/supervisord.conf)
-h, --help 打印使用帮助信息并退出
-i, --interactive 在执行命令后启动一个交互式shell
-s, --serverurl URL supervisord服务正在侦听的URL(默认为“http://localhost:9001”)。
-u, --username 用于与服务进行身份验证的用户名
-p, --password 用于与服务进行身份验证的密码
-r, --history-file 保持readline历史记录(如果readline可用)

action [arguments]

action是像“tail”或“stop”这样的命令。如果在命令行中指定了-i或没有指定操作,将启动一个解释交互键入的操作的“shell”。使用action“help”来找出可用的action。

3.2 supervisorctl动作

help

打印可用操作的列表

help <action>

打印<action>帮助

add <name> […]

激活进程/组配置中的任何更新

remove <name> […]

从活动配置中删除进程/组

update

Reload config and add/remove as necessary, and will restart affected programs

update all

根据需要重新加载config和add/remove,将重新启动受影响的程序

update <gname> […]

更新特定的组,将重启受影响的程序

clear <name>

清除进程的日志文件。

clear <name> <name>

清除多个进程的日志文件

clear all

清除所有进程日志文件

fg <process>

在前台模式下连接进程按Ctrl+C退出前台

pid

得到supervisord的PID。

pid <name>

通过名称获取单个子进程的PID。

pid all

获取每个子进程的PID,每行一个。

reload

重启远程supervisord

reread

重新加载守护进程的配置文件,不需要添加/删除(不需要重启)

restart <name>

重启进程注意:重启不会重新读取配置文件。关于这一点,请参阅重读和更新。

restart <gname>:*

重启组内所有进程注意:重启不会重新读取配置文件。关于这一点,请参阅重读和更新。

restart <name> <name>

重启多个进程或组注意:重启不会重新读取配置文件。关于这一点,请参阅重读和更新。

restart all

重启所有进程注意:Restart不会重新读取配置文件。关于这一点,请参阅重读和更新。

signal

没有信号帮助

start <name>

启动进程

start <gname>:*

启动组中的所有进程

start <name> <name>

启动多个进程或组

start all

开始所有进程

status

获取所有进程状态信息。

status <name>

通过名称获取单个进程的状态。

status <name> <name>

获取多个命名进程的状态。

stop <name>

停止一个进程

stop <gname>:*

停止组中的所有进程

stop <name> <name>

停止多个进程或组

stop all

停止所有进程

tail [-f] <name> [stdout|stderr] (default stdout)

输出进程日志的最后一部分

例如:

tail -f <name> 命名进程stdout的连续尾部按Ctrl-C退出。

tail -100 <name> 进程stdout的最后100 字节

tail <name> stderr 进程stderr的最后1600 字节

4. 信号

supervisord程序可能会被发送信号,使其在运行时执行某些操作。

您可以将这些信号中的任何一个发送到单个supervisord进程id。这个进程id可以在配置文件的[supervisord]部分的pidfile参数所表示的文件中找到(默认为$CWD/supervisord.pid)。

4.1 信号句柄

SIGTERM

supervisord 和所有的子进程都会关闭。这可能需要几秒钟。

SIGINT

supervisord 和所有的子进程都会关闭。这可能需要几秒钟。

SIGQUIT

supervisord 和所有的子进程都会关闭。这可能需要几秒钟。

SIGHUP

supervisord 将停止所有进程,从找到的第一个配置文件重新加载配置,并启动所有进程。

SIGUSR2

supervisord 将关闭并重新打开主活动日志和所有子日志文件。

5. 运行时安全策略

开发人员已经尽了最大努力来确保使用作为root运行的supervisord进程不会导致意外的特权升级。但购者自慎。Supervisor不像DJ Bernstein的daemontools那样偏执,因为Supervisord允许在配置文件中任意指定写入数据的路径。允许任意的路径选择可能会导致符号链接攻击的漏洞。在配置中指定路径时要小心。确保没有特权的用户不能读取或写入supervisord配置文件,并且supervisor包安装的所有文件都有“健全的”文件权限保护设置。此外,确保您的PYTHONPATH是正常的,并且所有Python标准库文件都有足够的文件权限保护。

6. 在开机时自动运行supervisord

如果您使用的是发行版打包的Supervisor版本,那么它应该已经集成到发行版的服务管理基础结构中。

以下是用户为各种操作系统提供的脚本:https://github.com/Supervisor/initscripts

如果你卡住了,这里有一些Serverfault的答案: How to automatically start supervisord on Linux (Ubuntu)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

supervisor系列:2、运行supervisor 的相关文章

  • 进程管理

    彩蛋 操作系统总目录 戳我 进程 进程的概念 进程的定义 程序 就是一个指令序列 程序段 数据段 PCB三部分组成了进程实体 进程映像 一般情况下 xff0c 我们把进程实体就简称为进程 例如 xff0c 所谓创建进程 xff0c 实质上是
  • 服务器管理常用命令(Linux、进程管理、资源管理)

    1 进程相关 xff08 找进程 杀进程 查占用 xff09 根据关键字找进程top grep keyword more 4迅速定位包含某个关键字的进程的pidpgrep l XXXRed Hat 里查看所有进程的命令ps ef根据PID查
  • supervisor安装

    说明 Supervisor翻译过来是监管人 xff0c 在Linux中Supervisor是一个进程管理工具 xff0c 当进程中断的时候Supervisor能自动重新启动它 可以运行在各种类Linux unix的机器上 xff0c sup
  • Supervisor 之部署

    介绍 supervisor可以对进程进行监管 xff0c 当进程挂掉 xff0c 可以对进程进行重启 xff0c 不用编写额外的脚步进行控制 名词 supervisor xff1a 安装的软件的名称 supervisord xff1a 装好
  • Redhat进程管理

    进程管理 概论 xff1a 程序 xff1a 静态的代码 xff0c 占用磁盘空间 进程 xff1a 动态的代码 xff0c 占用内存 cpu xff08 提供服务的主体 xff09 进程的唯一标识 xff1a PID 编号 父进程 子进程
  • supervisor搭建与配置

    supervisor 是管理程序进程启动和状态 xff0c 当程序进程死掉 xff0c supervisor会把这个程序进程重新拉起 python版本最低要2 7 pip install supervisor 就可以安装了 如果是pytho
  • Linux进程管理(一) Linux进程的基本概念

    Linux进程的基本概念 最后更新时间2020 04 09 Ubuntu linux的所有任务都是在操作系统内核的调度下由CPU执行 xff0c 很多时候 xff0c Linux是将任务和进程的概念合在一起 进程的标准定义 xff1a 进程
  • linux系统--进程管理&计划任务

    kill 9 PID 强制关闭PID kill 1 PID 重启PID的进程 pgrep ssh 查询ssh所有的PID pkill ssh 关闭ssh服务 不需要查询ssh进程的PID 进程优先级 nice指定程序的运行和优先级 n的取值
  • Linux进程管理-ps

    Linux进程管理 ps ps 命令的基本格式如下 xff1a root 64 localhost ps aux 查看系统中所有的进程 xff0c 使用 BS 操作系统格式 root 64 localhost ps le 查看系统中所有的进
  • Linux进程管理-kill

    Linux进程管理 kill kill 从字面来看 xff0c 就是用来杀死进程的命令 xff0c 但事实上 xff0c 这个或多或少带有一定的误导性 从本质上讲 xff0c kill 命令只是用来向进程发送一个信号 xff0c 至于这个信
  • Supervisor服务器进程监测

    服务器上的应用程序有时候会莫名其妙地挂掉 xff0c 如果我们经常去登录服务器看是不是程序挂了 xff0c 挂了再拉起 xff0c 那样是非常耗时和麻烦的事情 后来我们通过使用 supervisor 去守护启动 xff0c 实现方法如下 一
  • 进程管理(五)--linux进程内核栈

    在进程创建时 xff0c 内核会为进程创建一系列数据结构 xff0c 其中最重要的就是上章学习的task struct结构 xff0c 它就是进程描述符 xff0c 表明进程在生命周期内的所有特征 同时 xff0c 内核为进程创建两个栈 x
  • perp系列之一:关于perp

    perp系列之一 关于perp 版本说明 版本 作者 日期 备注 0 1 ZY 2019 5 29 初稿 目录 文章目录 perp系列之一 关于perp 版本说明 目录 欢迎 关于 好处 这是一个很好的进程管理框架 适用于Unix系统 之前
  • centos 普通用户操作 supervisor 报错

    当我们在centos系统中使用普通用户操作supervisor时 可能会有以下权限问题 error
  • Linux操作系统进程的状态和转换(五态模型)

    1 进程的状态和装换 1 1进程的三态模型 按进程在执行过程中的不同情况至少要定义三种状态 运行 running 态 进程占有处理器正在运行的状态 进程已获得CPU 其程序正在执行 在单处理机系统中 只有一个进程处于执行状态 在多处理机系统
  • 趣谈操作系统原理,存储管理之页式、段式、段页式存储

    一 概述 非连续分配管理方式允许一个程序分散地装入到不相邻的内存分区 根据分区的大小是否固定分为分页式存储管理方式和分段式存储管理方式 分页存储管理方式中 又根据运行作业时是否要把作业的所有页面都装入内存才能运行分为基本分页式存储管理方式和
  • centos7安装配置supervisor保姆教程

    介绍 Supervisor是一个进程管理工具 是由python语言编写 基于linux操作系统的一款服务器管理工具 用以监控服务器的运行 发现问题能立即自动预警及自动重启等功能 是一个客户 服务器系统 服务器端称为supervisord 管
  • Go操作supervisor xml rpc接口及注意事项

    Go操作supervisor xml rpc接口及注意事项 文章目录 Go操作supervisor xml rpc接口及注意事项 1 前言 2 管理web 3 go处理库 4 实时日志处理代码片段 1 前言 之前提到过目前我们的进程都是通过
  • supervisor系列:4、子进程

    supervisor系列 4 子进程 文章目录 supervisor系列 4 子进程 1 非后台运行的子进程 1 1 程序配置示例 1 1 1 Apache 2 2 6 1 1 2 Two Zope 2 X instances and on
  • Linux进程管理:deadline调度器

    一 概述 实时系统是这样的一种计算系统 当事件发生后 它必须在确定的时间范围内做出响应 在实时系统中 产生正确的结果不仅依赖于系统正确的逻辑动作 而且依赖于逻辑动作的时序 换句话说 当系统收到某个请求 会做出相应的动作以响应该请求 想要保证

随机推荐

  • yield和join方法的使用。

    join方法用线程对象调用 如果在一个线程A中调用另一个线程B的join方法 线程A将会等待线程B执行完毕后再执行 yield可以直接用Thread类调用 yield让出CPU执行权给同等级的线程 如果没有相同级别的线程在等待CPU的执行权
  • 【笔记】sass

    sass入门 1 可以定义变量 2 嵌套 3 导入其他sass文件 最后编译为一个CSS文件 4 mixin定义一些代码片段 且可传参数 include 5 extend组合代码声明 6 运算 7 颜色函数color darken link
  • 存储卡的使用方法大全

    存储卡的使用方法大全 现在购买诺基亚手机 尤其是其智能手机的朋友是越来越多了 与其他品牌的机型相比 诺基亚的手机有一个最大的优点 就是支持储存卡内存扩充的机型比较多 这让大家在使用中不必再担心手机容量的问题 这也体现了诺基亚 科技以人为本
  • 关于 ubuntu18.04 机械革命 RTX2060 解决分屏显示问题

    本人小白 如有错漏 欢迎批评指正 同时感谢之前发表过以及以后会在CSDN上发表自己学习经验的同志们 问题背景 本人使用的是 机械革命笔记本电脑 安装双系统 win10 以及 ubuntu18 04 在使用过程中 遇到了 分屏黑屏 将鼠标移动
  • NAT穿透的工作原理

    一 引言 1 1 背景 IPv4地址短缺 引入NAT 全球IPv4地址早已不够用 因此人们发明了NAT 网络地址转换 来缓解这个问题 简单来说 大部分机器都使用私有IP地址 如果它们需要访问公网服务 那么 出向流量 需要经过一台NAT设备
  • Pytest+Unittest+Git+Jenkins企业级CICD自动化测试平台建设方案

    随着持续集成的引入 项目中的自动化测试用例越来越多 每轮执行所消耗的时间也越来越久 要提高自动化测试用例执行的效率 以下几点是需要考虑的根本点 1 公司项目的交付策略如何 首先 测试团队服务于公司项目 因此我们必须根据公司项目的交付策略做对
  • SSL证书有什么用?

    SSL证书提供了一种在互联网上身份验证的方式 是用来标识和证明双方身份的数字信息文件 使用SSL证书的网站 可以保证用户和服务器间信息交换的保密性具有不可窃听 不可更改 不可否认 不可冒充的功能 45 113 203 1 45 113 20
  • 怎么用EF框架进行增删改查

    EF框架 1 EF是什么 2 EF的框架模式 3 EF框架优缺点 4 进行增删改查 4 1 新增 4 1 1 直接新增 4 1 2 改变状态新增 4 1 3 批量新增 4 2 删除 4 2 1 删除 先查询后删除 删除ID为6的 4 2 2
  • java jsch_java 利用jsch端口转发 建立连接

    其他代码都一样 参照 使用JSch完成 ssh隧道建立 只有获取连接的部分不相同 代码如下 端口转发 链接两层 public boolean connect throws JSchException try session ssh getS
  • Android NDK C++开发注意事项总结

    相信Android开发者都喜欢用C 编写一些高效的应用 有关Android NDK的C 开发相关知识总结如下 从Android NDK r5开始支持了STL Port 在这个版本开始就可以使用部分STL库的功能了 比如说vector str
  • thumbnailator压缩图片并存至Excel单元格代码

    文章目录 依赖 压缩图片工具类 存至excel的转化器 Excel导入导出的数据类 将数据库实体转化为excel实体 依赖
  • Python 基于 Django 的学生成绩管理系统,可视化界面

    1简介 对于学生成绩管理系统 充分运用现代化的信息技术手段 对于学生成绩信息管理发展的趋势就是信息化 信息化时代下的信息管理 需要深化信息管理体制与手段的改革 充分运用信息化手段来全方位的进行学生成绩管理系统工作 构建学生成绩管理系统 实现
  • Unity 中检测射线穿过的所有的物体

    在开发中 有个需求 射线要检测所有穿过的物体 代码如下 using UnityEngine public class HitCollider MonoBehaviour public float raycastDistance Mathf
  • 线程与线程池的理解

    1 什么是线程 线程和进程的区别是什么 线程 程序执行流的最小执行单位 是行程中的实际运作单位 进程简单来说 一个应用程序的运行就可以被看做是一个进程 而线程 是运行中的实际的任务执行者 进程中包含了多个可以同时运行的线程 2 线程的生命周
  • LeetCode子域名访问计数-Python3.7<五>

    上一篇 LeetCode 键盘行 lt 四 gt 题目 https leetcode cn com problems subdomain visit count description 一个网站域名 如 discuss leetcode c
  • Python数据分析之——数据可视化(折线图)

    matplotlib的pyplot子库提供了和matlab类似的绘图API 方便用户快速绘制2D图表 首先我们先来看看效果图 然后 是数据 接着是代码 coding utf 8 import numpy as np import matpl
  • c语言入门----详解分支语句(if语句)

    文章目录 一 前言 二 顺序结构 三 为什么会有分支语句 四 if语句 五 if语句形式 1 if的基本形式 2 有关if的例子 3 有关if的易错提醒 六 if else语句 1 为什么会有if else语句 2 if else的基本形式
  • Canvas和SVG有什么区别

    在项目开发中也许会涉及到图形 经常用到的就是svg和canvas两种画图方式 下面就让我们看一看他们两者的区别 svg绘制出来的每一个图形的元素都是独立的DOM节点 能够方便的绑定事件或用来修改 canvas输出的是一整幅画布 svg输出的
  • RabbitMQ消息可靠性(二)-- 消费者消息确认

    一 消费者消息确认是什么 在这种机制下 消费者在接收到消息后 需要向 RabbitMQ 发送确认信息 告知 RabbitMQ 已经接收到该消息 并已经处理完毕 如果 RabbitMQ 没有接收到确认信息 则会将该消息重新加入队列 等待其他消
  • supervisor系列:2、运行supervisor

    supervisor系列 2 运行supervisor 文章目录 supervisor系列 2 运行supervisor 1 添加一个程序 2 运行supervisord 2 1 supervisord命令行配置 3 运行superviso