supervisor管理python进程

前言

        平时开发调试中使用conda环境,项目比较多环境多,而且命令繁杂,每一次启动项目都可能会因为忘记启动方式而频繁报错。现在可以通过supervisor来管理,只需要配置几个文件,就可以轻松通过简单一致的命令启动工程,并且保持在后台运行,如果程序异常中断,还可以自动重启。

安装

apt install supervisor

生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

在配置文件里修改配置内容,一般在配置文件的最后面

[include] files = /etc/supervisord.d/*.conf

为每个工程配置conf

/etc/supervisord.d是一个所有进程配置的父文件夹,比如有project1,project2,project3,那么/etc/supervisord.d文件夹中就会有project1.conf,project2.conf,project3.conf

创建配置文件夹

mkdir /etc/supervisord.d/

配置相关信息

vim /etc/supervisord.d/project1.conf

示例配置内容

[supervisord] 
strip_ansi = true [program:project] 
directory = /data/ai_lab/msf/ComfyUI 
command = /home/username/miniconda3/envs/project_env/bin/python main.py --listen 
autostart = true 
autorestart = true 
user = root 
stdout_logfile = /data/project.log
  1. project_name 必须是唯一的,否则将会出现错乱

  2. directory 填写你启动脚本时的工作目录,如果你使用脚本的绝对目录,那么directory可以不设置

  3. command是执行脚本的命令,不需要使用nohup让其变为后代进程,supervisor会自动将其变为后台进程,command最好是虚拟环境bin目录下的python解释器的绝对路径,否则可能会找错解释器路径,导致程序报错。

  4. autostart 配置为True, supervisor 启动时,任务跟随启动

  5. autorestart 配置为True, 进程不存在时会自动重启, 默认重启3次,想修改重启次数,可以配置startretries, 设置最多重启的次数

  6. user 设置启动任务时所用的用户,supervisor 有必要使用root账号启动,这样才有权限配置其他启动账号

  7. stdout_logfile 配置输出日志,可以将所有进程日志存放在一个好找的文件夹,或者都存放到每一个工程的目录下,但为了方便找,一般统一放在一个目录里。

启动supervisor

supervisord -c /etc/supervisord.conf

supervisorctl管理进程

supervisorctl 是 supervisord 的一个命令行客户端工具,使用supervisorctl可以遍历的对进程进行管理,支持的命令如下

project是示例配置内容中[program:project]的project

supervisorctl status #查看进程状态 
supervisorctl stop project #终止某个进程 
supervisorctl start project #启动某个进程 
supervisorctl restart project #重启某个进程 
supervisorctl reread #更新配置,根据最新的配置启动程序,会启动已经运行的程序 
supervisorctl update #更新配置,重启配置有变化的进程,不会重启那些配置没有变化

参考链接:

https://zhuanlan.zhihu.com/p/264111843

https://github.com/Supervisor/supervisor/issues/85

http://supervisord.org/configuration.html#supervisord-section-values

https://blog.csdn.net/codeswarrior/article/details/107511960

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

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

相关文章

C++ day55 判断子序列 不同的子序列

题目1:392 判断子序列 题目链接:判断子序列 对题目的理解 判断字符串s是否为t的子序列 字符串s和字符串t的长度大于等于0,字符串s的长度小于等于字符串t的长度,本题其实和最长公共子序列的那道题很相似,相当于找两…

HashMap相关专题

前置知识:异或运算 异或运算介绍 异或有什么神奇之处(应用)? (1)快速比较两个值 (2)我们可以使用异或来使某些特定的位翻转,因为不管是0或者是1与1做异或将得到原值的相…

IntelliJ IDEA 2023.2新特性详解第三弹!Docker、Kubernetes等支持!

9 Docker 在 Docker 镜像层内预览文件 现在可以在 Services(服务)工具窗口中轻松访问和预览 Docker 镜像层的内容。 从列表选择镜像,选择 Show layers(显示层),然后点击 Analyze image for more informati…

ES6对象

1.对象简写 ES6中规定可以直接在对象中写入变量和函数作为对象的属性和方法,此时属性名为变量名, 属性值为变量的值。对象简写在未来的使用频率极其高。 let namelarry;let age12;let obj{name,age,//es5 sayName:function(){}// sayName(){// console.log(t…

<软考>软件设计师-2操作系统(总结)

(一) 进程管理 1 操作系统概述 1-1 操作系统定义: 能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。 1-2 操作系统的作用: 1 通过资源管理提高计…

7+WGCNA+机器学习+实验+泛癌分析,多要素干湿结合

今天给同学们分享一篇生信文章“Analysis and Experimental Validation of Rheumatoid Arthritis Innate Immunity Gene CYFIP2 and Pan-Cancer”,这篇文章发表在Front Immunol期刊上,影响因子为7.3。 结果解读: DEG筛选和数据预处理 数据在…

Helplook VS Google Docs:一对一比较

还记得Google Docs在2006年一炮走红的时候吗?它很大程度地改变了协作方式,也减少了附加文件和频繁保存的麻烦。相比Microsoft Word,很多人更喜欢Google Docs的简单性。 但是时代也在不断地发展。像HelpLook这样的新竞争对手也可以提供先进的…

设计模式总目录

目录 设计模式 1. 创建型模式 1.1 工厂方法模式 1.2 抽象工厂模式 1.3 单例模式 1.4 建造者模式 1.5原型模式 2. 结构型模式 2.1 适配器模式 2.2 装饰器模式 2.3 代理模式 2.4 外观模式 2.5 桥接模式 2.6 组合模式 2.7 享元模式 3. 行为型模式 3.1 策略模式 …

字符集——带你了解UTF-8的前世今生

文章目录 字符集的来历汉字和字母的编码特点Unicode字符集字符集小结编码和解码开发约定 字符集的来历 计算机是美国人发明的,由于计算机能够处理的数据只能是0和1组成的二进制数据,为了让计算机能够处理字符,于是美国人就把他们会用到的每一…

前端面试高频考点—事件循环Event loop

目录 事件循环 执行步骤 概念讲解 主线程 微任务(micro task) 宏任务(macro task) Event Loop经典例题 这段代码的执行结果是什么? 正确答案: 具体流程: 事件循环 主线程从"任务队列"中读取执行事件,这个过程…

通俗讲解分布式锁:场景和使用方法

对于锁大家肯定不会陌生,比如 synchronized 关键字 和 ReentrantLock 可重入锁,一般我们用其在多线程环境中控制对资源的并发访问。但是随着业务的发展,分布式的概念逐渐出现在我们系统中,我们在开发的过程中经常需要进行多个系统…

字符数组和字符串例题

1、相邻字符判相等 题目描述 输入一行字符(长度小于等于1000),判断其中是否存在相邻两个字符相同的情形,若有,则输出该相同的字符并结束程序(只需输出第一种相等的字符即可)。否则输出No。 输入要求 输入一行字符&…

File类—递归文件搜索执行脚本文件

文章目录 一、需求分析二、File类2.1 File对象的创建2.2 File判断和获取方法2.3 创建和删除方法2.4 遍历文件夹方法 三、Runtime类—常见api四、递归文件搜索执行脚本文件 一、需求分析 在本篇博客中,我们想通过递归文件的方式,在D:\\判断下搜索QQ.exe这…

麒麟V10安装kerberos客户端

麒麟V10系统安装kerberos客户端 当系统具备yum镜像源的时候需要执行安装命令 yum install krb5-devel krb5-client krb5-libs -y 会提示报错 “未找到匹配的参数:krb5-client” 此时我们需要手动安装krb5-client 安装包链接放到了这里 链接: https://pan.baidu.com/s/1x1YVr6…

SQL Server的安装和首个库的创建

一、熟悉SQL Server的安装环境; 1.安装Microsoft的数据库管理系统SQL Server 2022 先把SQL Server 2022下载好后进行解压后出现以下界面然后点击基本进行安装 然后会出现以下界面: 一步步按照提示往下走即可,把SQL Server 2022安装完成后再…

【1day】Panabit 日志系统openid接口SQL注入漏洞

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、资产测绘 三、资产测绘 四、漏洞复现

Leetcode刷题笔记题解(C++):LCR 021. 删除链表的倒数第 N 个结点

思路:用双指针去遍历链表,删除left的下一个节点,注意的是n大于等于链表长度即删除第一个节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {…

tmux简单使用

它允许你在一个终端窗口中创建多个终端会话,并在它们之间进行切换。以下是tmux的一些主要用途和功能: 多窗口: Tmux允许你在一个终端中创建多个窗口。每个窗口可以包含一个或多个终端会话,你可以轻松地在这些窗口之间切换。面板分…

ifstream读取txt中的中文数据转成QString出现乱码

使用ifstream从txt文本中读取中文数据到string,再将string转成QString输出时出现了乱码。 分析:如果ifstream能成功从txt文本中读出中文数据,那大概率txt用的编码是ANSI编码(GBK就是ANSI的一种),那么在转成…

不愧是字节出来的,太厉害了。。。

前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…