linux守护进程生命周期管理-supervisord

简介

supervisor是一个client/server系统,允许用户控制多个类unix系统的进程,摆脱rc.d脚本的不方便性.supervisor具有简单,集中化管理,搞笑,可扩展性,高兼容.

整套软件包含:supervisord(守护进程),supervisorctl(命令行工具),web server(一个web交互界面),XML-RPC 交互

安装

#centos
yum install epel-release
yum install supervisor
#ubuntu
apt isntall supervisor

配置文件

查看/etc/supervisord.conf内容可以看到,配置文件被分为几个部分,对这个几个部分详细说明

unix_http_server

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
;chmod=0700                 ; sockef 文件的权限 (默认是 0700,只有属主有读写执行权限)
;chown=nobody:nogroup       ; socket 文件属主和属组
;username=user              ; 指定可以访问账号(d默认是没有)
;password=123               ; 指定访问的密码(默认是没有)

这里file配置指定socket的路径,这个是作为客服端访问的一个入口,启动unix是表示这个是一个监听socket的程序,说明只能在本机访问,不能给其他网络客户端访问.这里客服端一般是supervisorctl命令.这个unix_http_server是默认启动的.

如果你需要使用账号密码访问需要给username和password指定账号和密码.

inet_http_server

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; 指定监听的ip和端口
;username=user              ; 指定账号,默认是没有
;password=123               ; 指定密码,默认是没有,这个账号密码最好添加

如果你想将控制入口暴露给网络中的其他客户端,可以去掉注释,可以将这个在防火钱上授权给集中控制客户端ip,做到集中控制程序.这个配置默认是没有启用的,有一定安全隐患在其中.

supervisord

[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; 日志存放路径,默认是当前目录下supervisord.log
logfile_maxbytes=50MB       ; 日志文件的最大大小,默认是50MB
logfile_backups=10          ; 日志保存的数量默认是10个
loglevel=info               ; 日志等级是info,默认 info; 其他包括: debug,warn,trace
pidfile=/var/run/supervisord.pid ; pid文件路径
nodaemon=false              ; 是否运行为后端程序
minfds=1024                 ; 最小可用的文件描述限制是1024
minprocs=200                ; 最小可用的进程数是200
;umask=022                  ; 进程文件umask
;user=chrism                 ; 启动进程使用的用户名称
;identifier=supervisor       ; supervisord标识是supervisor
;directory=/tmp              ; 在启动的时候需要切换的目录
;nocleanup=true              ; 不清理临时文件
;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value       ; 环境变量
;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)

这个supervisord程序的配置信息.

supervisorctl

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available

这段配置在使用supervisorctl这个命令的时候,默认的参数,serverurl是前面unix_http_server或inet_http_server中指定的地址,username,prompt指定访问需要用到的账号密码(如果有指定的话),history_file指定使用命令的历史记录.

自己程序配置段

;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=true              ; retstart at unexpected quit (default: true)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

这个配置段是我们需要重点掌握的

  • command=/bin/cat 程序的路径,可以携带参数
  • process_name=%(program_name)s ; 成熟名称,默认是program_name,上面的theprogramname
  • numprocs=1 ; 进程数量,一般是1
  • directory=/tmp ; 进程运行的目录
  • umask=022 ; umask for process (default None)
  • priority=999 ; the relative start priority (default 999)
  • autostart=true ; start at supervisord start (default: true)
  • autorestart=true ; retstart at unexpected quit (default: true)
  • startsecs=10 ; number of secs prog must stay running (def. 1)
  • startretries=3 ; max # of serial start failures (default 3)
  • exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  • stopsignal=QUIT ; signal used to kill process (default TERM)
  • stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  • user=chrism ; setuid to this UNIX account to run the program
  • redirect_stderr=true ; 将错误输出重定向到标准输出中,这样就可以将stdout和stderr到同一个文件中
  • stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
  • stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  • stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)
  • stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  • stdout_events_enabled=false ; emit events on stdout writes (default false)
  • stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
  • stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
  • stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)
  • stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  • stderr_events_enabled=false ; emit events on stderr writes (default false)
  • environment=A=1,B=2 ; process environment additions (def no adds)
  • serverurl=AUTO ; override serverurl computation (childutils)

我使用的配置一般是

[program:example]
command=ping -i 5 baidu.com
directory=/example
process_name=%(program_name)s
autostart=true
autorestart=true
startsecs=3
startretries=3
stopsignal=TERM
exitcodes=0,2
stopwaitsecs=10
redirect_stderr=true
stdout_logfile = /tmp/example.log
stdout_logfile_maxbytes=1000MB
stdout_logfile_backups=5

include

[include]
files = supervisord.d/*.ini

一般操作是将我们自己的程序的supervisor的文件文件一个一个单独放在这个files指定的目录中,可以更好的管理和操作.include会将files中的配置加入进来.

supervisorctl

这个命令可以让我们控制supervisor所管理的守护进程.

1 添加,删除,修改配置

在之后的管理中,我们会向include中指定的files中添加,删除,修改守护进程的配置,每次操作完后都需要是的supervisor重新加载配置.

supervisorctl update

2 重启,停止,启动守护进程

#重启
supervisorctl restart processname
#重启所有程序
supervisorctl restart all
#停止
supervisorctl stop processname
#停止所有程序
supervisorctl stop all
#启动
supervisorctl start processname
#启动所有
supervisorctl start all

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

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

相关文章

git回退commit的方式

在Git中,回退commit(即撤销之前的提交)可以通过多种方式来实现。以下是一些常见的方法,以及它们的详细步骤和注意事项: ### 1. 使用git revert命令 git revert命令用于撤销某次commit,但它并不会删除该comm…

FFmpeg 硬件编码加速文档介绍

介绍 硬件访问:许多平台提供了对专用硬件的访问,这些硬件可以用于执行解码、编码或过滤等视频相关操作。 性能与资源使用:使用硬件可以加快某些操作的速度或减少其他资源(特别是CPU)的使用,但可能会产生不同的结果或质量较低,或带来在使用纯软件时不存在的额外限制。 硬…

公爹公婆出首付买房,离婚的儿媳妇能分吗?

小两口结婚后为了更好地生活打算购房,男方父母帮助支付首付款,后房屋登记在夫妻名下。后两人因感情不和打算离婚,女方要求按照房屋的现行价值进行分割,能否得到支持?近日,江苏省南通市中级人民法院对这起离…

【Postman学习】

Postman是一个非常流行的API开发和测试工具,广泛用于Web服务的开发、测试和调试。它提供了一个图形界面,允许用户轻松地构建、发送和管理HTTP(S)请求,同时查看和分析响应。下面是对Postman接口测试工具的详细解释: 1. Postman简介…

Linux安装Node-RED并实现后台运行及开机启动

首先确保系统中已近成功安装Node.js,并保证需要的合适版本: 关于node.js的安装可以参考我的另一篇博文:《AliyunOS安装Node.js》。 然后就可以使用npm工具安装Node-RED了,很简单使用如下命令: sudo npm install -g --unsafe-per…

【代码随想录算法训练Day53】LeetCode 739.每日温度、LeetCode 496.下一个更大元素、LeetCode 503. 下一个更大元素 II

Day53 单调栈 LeetCode 739.每日温度 经典的单调栈题目&#xff0c;确实的感受到了单调栈的强大之处。 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {stack<int> st;vector<int> res(temperatures.size…

php+redis 生成二维码库

项目场景&#xff1a; 活动报名二维码&#xff0c;生成 30W 的二维码量存放到 redis 中&#xff0c;并通过 redis 读取&#xff0c;以减轻 mysql 数据库的压力。 实现很简单&#xff0c;分为两步&#xff1a; 1、生成&#xff1a;通过 for 循环&#xff0c;以集合方式插入到…

MATLAB使用系统辨识工具箱建立PID水温的传递函数系数

概述 利用PID控制水温&#xff0c;由于实际在工程项目中&#xff0c;手动调节PID参数比较耗费时间&#xff0c;所以可以先利用MATLAB中的Simulink软件建立模型&#xff0c;先在仿真软件上调节大概的PID参数&#xff0c;再利用此PID参数为基础在实际的工程项目中手动调节PID参数…

这些并发编程技术你都知道吗?

与其碌碌无为&#xff0c;不如兴风作浪。 虽然不是所有的系统都需要很多的并发编程技术&#xff0c;但是掌握常见的高并发秘籍&#xff0c;便能让我们的系统快起来&#xff0c;面对访问量的剧增从容应对。 接下来&#xff0c;为我们一起来看看常见的高并发技术有哪些。总结起来…

SSH版本升级-openssh-9.7p1

SSH版本升级-openssh-9.7p1 1、查看当前版本2、安装openssl2.1、编译安装ssl 3、下载新版本SSH4、备份原有的SSH配置5、上传文件并解压6、卸载原有的openssh包7、编译安装openssh7.1、在解压后的目录&#xff0c;初始化openssh7.2、将文件拷回7.3、修改配置文件 最终实现&#…

linux系统中给java 应用配置开机自动启动

第一步需要一个控制java应用启动&#xff0c;停止&#xff0c;重启的脚本&#xff0c;脚本内容如下&#xff0c;我是springboot应用&#xff0c;其他的可以根据情况改写. #!/bin/bashAPP_NAME/data/oa/start-2.0.jar #执行命令有误时&#xff0c;提示使用说明参数 usage() {ec…

DDD学习笔记五

模型引力场&#xff1a;聚合 强作用力体现&#xff1a; 某个领域模型是另一些模型存在的前提&#xff0c;没有前者&#xff0c;后者就失去了生存的意义。 一组领域模型之间存在关联的领域逻辑&#xff0c;任何时候都不能违反。 一组领域模型必须以一个完整的、一致的状态呈现给…

CSDN写文章时需要上、下标字号怎么输?

上标&#xff1a;​^^&#xff0c;符号中间加字 下标&#xff1a;~~&#xff0c;符号中间加字 前题是用MD编辑器&#xff0c;不然白搭&#xff1a; 我是感觉CSDN这个文本编辑比较拉&#xff0c;非常想吐槽。

dB分贝入门

主要参考资料&#xff1a; dB&#xff08;分贝&#xff09;定义及其应用: https://blog.csdn.net/u014162133/article/details/110388145 目录 dB的应用一、声音的大小二、信号强度三、增益 dB的应用 一、声音的大小 在日常生活中&#xff0c;住宅小区告知牌上面标示噪音要低…

vue2 element ui 表单 动态增加表单项 表单项值不可重复 select多选

案例 <template><el-form :model"form" ref"form" label-width"70px"><el-form-item><el-button icon"el-icon-plus" type"primary" plain click"add">新增</el-button><el-b…

VUE3-Elementplus-form表单-笔记

1. 结构相关 el-row表示一行&#xff0c;一行分成24份 el-col表示列 (1) :span"12" 代表在一行中&#xff0c;占12份 (50%) (2) :span"6" 表示在一行中&#xff0c;占6份 (25%) (3) :offset"3" 代表在一行中&#xff0c;左侧margin份数 el…

后劳动经济学(PLE):AI时代的工作未来

引言 随着人工智能&#xff08;AI&#xff09;和自动化技术的飞速发展&#xff0c;我们迎来了一个新的经济范式——后劳动经济学&#xff08;PLE&#xff09;。这一概念主要讨论在AI和自动化技术超越人类能力的关键领域后&#xff0c;机器将不可避免地在许多经济活动中取代人类…

如何玩单机版:QQ音速

前言 我是研究单机的老罗&#xff0c;今天教大家带来一款怀旧游戏QQ音速 的教程。根据我的文章&#xff0c;一步一步就可以玩了。 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; QQ音速 搭建教程 此…

python之GIL锁详解

目录 1.GIL是什么以及影响 2.为什么会有GIL锁&#xff1f; 1.GIL是什么以及影响 在Python中&#xff0c;多线程的并发性受到全局解释器锁&#xff08;GIL&#xff0c;Global Interpreter Lock&#xff09;的影响。GIL是CPython&#xff08;Python的官方实现&#xff09;中的…

vscode下无法识别node、npm的问题

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 因为node是在cmd安装的&#xff0c;是全局安装的&#xff0c;并不是在这个项目里安装的。 解决方案&#xff1a; 1.在vscode的控制台&#xff0c;针对一个项目安装特定版本的node&#xff1b; 2.已经…