-
2017-09-26 22:06:21
今天写项目,老师提到supervisor可以监听服务器,如果使用nodejs express引擎模板与mongodb数据库交互,用supervisor监听比较好,你就不用每次修改服务器端代码,都要重启服务器,supervisor可以实时监听,我刚开始用,大家也可以试着用用,不会可以找找相关资源。
它的安装和安装其它的插件一样,先进入你的项目,npm install --save supervisor
然后使用supervisor启动你的服务器,命令行是:supervisor server.js(例如,server.js是你的出口文件)
更多相关内容 -
supervisor安装与配置
2018-04-19 14:34:20Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemontools和runit有些相似, 但是与它们不一样的是, 它... -
supervisor使用
2022-03-28 14:16:55supervisor是一个进程管理工具。 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了supervisor。 这个工具...1.介绍
supervisor是一个进程管理工具。用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了supervisor。
这个工具主要就两个命令:
supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令
supervisorctl:启动supervisor的命令行窗口
2.安装
推荐方法pip installpip install supervisor
3.使用案例
使用supervisor 启动 python main.py 文件vim /etc/supervisor/conf.d/demo.conf
添加以下内容
[program:demo] #项目名称为demo
command=python main.py #运行脚本
stderr_logfile=/var/log/supervisor/error_demo.log #错误日志
stdout_logfile=/var/log/supervisor/demo.log #输出
directory=/root/demo/ #项目路径
autostart=true #当supervisor 启动时会自动启动
user=root #用户
autorestart=true #自动重启
更新配置
supervisorctl update
查看进程运行状态
supervisorctl status
4.配置文件详解
[unix_http_server]
file=/var/run/supervisor/supervisor.sock ; socket 路径;chmod=0700 ; socket 文件的权限
;chown=nobody:nogroup ; socket 所属用户及组
;username=user ; 用户名
;password=123 ; 密码;[inet_http_server] ; 是否启用服务,默认是关闭的(启用的话可以看到supervisor 管理的服务状态)
;port=127.0.0.1:9001 ; 监听的IP及端口
;username=user ; 用户名
;password=123 ; 密码[supervisord] ; supervisord 全局配置
logfile=/var/log/supervisor/supervisord.log ; supervisor 日志路径
logfile_maxbytes=50MB ; 单个日志文件最大数
logfile_backups=10 ; 保留多少个日志文件(默认10个)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; pid 文件路径
nodaemon=false ; 启动是否丢到前台,设置为false ,表示以daemon 的方式启动
minfds=1024 ; 最小文件打开数,对应系统limit.conf 中的nofile ,默认最小为1024,最大为4096
minprocs=200 ; 最小的进程打开数,对应系统的limit.conf 中的nproc,默认为200
;umask=022 ; (process file creation umask;default 022)
;user=chrism ; 启动supervisord 服务的用户,默认为root
;identifier=supervisor ; (supervisord identifier, default is ‘supervisor’)
;directory=/tmp ; 这里的目录指的是服务的工作目录
;nocleanup=true ;
;childlogdir=/tmp ; (‘AUTO’ child log dir, default $TEMP)
;environment=KEY=value ; (key value pairs to add to environment)
;strip_ansi=false ; (strip ansi escape codes in logs; def. false); the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[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; The below sample program section shows all possible program subsection values,
; create one or more ‘real’ program: sections to be able to control them under
; supervisor.;[program:theprogramname] ; 定义一个守护进程 ,比如下面的elasticsearch
;command=/bin/cat ; 启动程序使用的命令,可以是绝对路径或者相对路径
;process_name=%(program_name)s ; 一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是%(program_name)s
;numprocs=1 ; Supervisor启动这个程序的多个实例,如果numprocs>1,则process_name的表达式必须包含%(process_num)s,默认是1
;directory=/tmp ; supervisord在生成子进程的时候会切换到该目录
;umask=022 ; umask for process (default None)
;priority=999 ; 权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999
;autostart=true ; 如果设置为true,当supervisord启动的时候,进程会自动启动
;autorestart=true ; 设置为随 supervisord 重启而重启,值可以是false、true、unexpected。false:进程不会自动重启
;startsecs=10 ; 程序启动后等待多长时间后才认为程序启动成功,默认是10秒
;startretries=3 ; supervisord尝试启动一个程序时尝试的次数。默认是3
;exitcodes=0,2 ; 一个预期的退出返回码,默认是0,2。
;stopsignal=QUIT ; 当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2
;stopwaitsecs=10 ; 在操作系统给supervisord发送SIGCHILD信号时等待的时间
;user=chrism ; 如果supervisord以root运行,则会使用这个设置用户启动子程序
;redirect_stderr=true ; 如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符
;stdout_logfile=/a/path ; 把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置
;stdout_logfile_maxbytes=1MB ; 标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小
;stdout_logfile_backups=10 ; 标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份
;stdout_capture_maxbytes=1MB ; 当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB
;stdout_events_enabled=false ; 如果设置为true,当进程在写它的stderr
;stderr_logfile=/a/path ; 把进程的错误日志输出一个文件中,除非redirect_stderr参数被设置为true
;stderr_logfile_maxbytes=1MB ; 错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小
;stderr_logfile_backups=10 ; 错误日志轮转备份的数量,默认是10,如果设置为0,则不备份
;stderr_capture_maxbytes=1MB ; 当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB
;stderr_events_enabled=false ; 如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发
;environment=A=1,B=2 ; 一个k/v对的list列表
;serverurl=AUTO ; 是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url5.常用操作命令
停止supervisor服务service supervisor stop
启动supervisor服务service supervisor start
关闭所有任务supervisorctl shutdown
启动或停止服务supervisorctl stop|start program_name
查看所有任务状态supervisorctl status
更新配置并运行supervisorctl update
作者:0384a3dcf39a
链接:https://www.jianshu.com/p/94444349d33b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 -
supervisor简介
2021-10-09 15:27:26supervisor是一个用python语言编写的进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisor监听到进程死后,可以很方便的让进程自动恢复,不再需要程序员或系统管理...1、概述
supervisor是一个用python语言编写的进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisor监听到进程死后,可以很方便的让进程自动恢复,不再需要程序员或系统管理员自己编写代码来控制。
2、架构:三大构成要素
- supervisord
supervisor的服务端:运行supervisor时会启动一个进程supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启
- supervisorctl
supervisor的客户端:supervisorctl是命令行管理工具,可以用命令来进行子进程的管理,supervisorctl常见命令
命令 含义 supervisorctl status 查看所有子进程服务状态 supervisorctl restart 重启所有子进程服务 supervisorctl restart name 重启子进程名字为name的服务 supervisorctl start name 开启子进程名字为name的服务 supervisorctl stop all 关闭所有子进程服务 supervisorctl stop name 停止子进程名字为name的服务 supervisorctl shutdown 关闭所有子进程服务 supervisorctl reload 重载配置文件,重启所有子进程服务 supervisorctl update 更新所有服务,一般用在添加新服务后 supervisorctl update name 更新子进程名字为name服务 - echo_supervisord_conf
默认的配置文件,一般生成默认文件为 supervisor.conf
3、安装
3.1、supervisor是基于python写的,所以使用pip来安装即可。
pip install supervisor
3.2、默认生成的几个地址需要我们关注# supervisord 路径 /usr/local/bin/supervisord # supervisorctl 路径 /usr/local/bin/supervisorctl # echo_supervisord_conf 路径 /usr/local/bin/echo_supervisord_conf
如上路径,我们也可以通过
whereis supervisord
、whereis supervisorctl
、whereis echo_supervisord_conf
得到
3.3、验证是否安装成功
supervisorctl --help
4、配置
4.1、创建 /etc/supervisor 目录
mkdir /etc/supervisor
4.2、创建并修改supervisord.conf文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
vi /etc/supervisor/supervisord.conf
# 将unix_http_server 下的 file 路径改成如下内容 [unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file) # 将supervisord 下的logfile 路径 和 pidfile 路径改成如下内容 [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket # 将include 下的 files 路径改成如下内容 [include] files = conf.d/*.conf
4.3、创建并添加文件权限
# 创建文件 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
4.4、配置supervisor开机自动启动服务(非必须,按需选择)
4.4.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
4.4.2、使能服务
systemctl enable supervisord
4.4.3、验证是否使能成功- 方法一,出现enable说明成功
systemctl is-enabled supervisord
- 方法二,开关机验证
注:supervisor常用命令
命令 含义 service supervisord start 启动supervisor服务 service supervisord stop 停止supervisor服务 service supervisord status 查看supervisor状态 5、如何配置新服务并系统控制?
假设服务名称为test。启动文件为py类文件entry.py
5.1、创建test.conf并编辑配置文件vi /etc/supervisor/conf.d/test.conf
[program:test] # 服务名称test directory = /home/test_project # 项目路径,项目运行前,会先切换到这个目录 command= /home/test_project/entry.py # 程序入口主文件绝对路径 autostart=true # 如果是true的话,子进程将在supervisord启动后被自动启动,默认就是true autorestart=true # 子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。false表示无论什么情况下,都不会被重新启动;unexpected表示只有当进程的退出码不在下面的exitcodes里面定义的退出码的时候,才会被自动重启。当为true的时候,只要子进程挂掉,将会被无条件的重启 user=root # root用户执行 redirect_stderr=true # 将stderr重定向stdout,默认false startsecs = 5 # 子进程启动多少秒之后,此时状态如果是running,我们认为启动成功了,默认值1 startretries=5 # 当进程启动失败后,最大尝试的次数。当超过5次后,进程的状态变为FAIL stdout_logfile = None # 正常日志输出文件,None表示不输出 stderr_logfile = None # 错误日志输出文件,None表示不输出
5.2、supervisor关闭并重新加载文件
- 方法一,推荐
# 更新配置后必须执行更新命令才生效 supervisorctl update # 查看服务运行状态 supervisorctl status
- 方法二
# 关闭 unlink /var/run/supervisor.sock # 以配置文件启动 supervisord -c /etc/supervisor/supervisord.conf # 查看服务运行状态 supervisorctl status
-
Supervisor使用详解
2020-07-24 17:03:19一、supervisor简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作...一、supervisor简介
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
二、supervisor安装
配置好yum源后,可以直接安装
yum install epel-release #安装yum源 yum install -y supervisor
启动 supervisor
/usr/bin/python2 /usr/bin/supervisord -c /etc/supervisord.conf
缺少这一步可能会报
error:class 'socket.error' [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socke
三、supervisor使用
supervisor配置文件:/etc/supervisord.conf
子进程配置文件路径:/etc/supervisord.d/
四、配置文件说明
supervisord.conf
[unix_http_server] file=/tmp/supervisor.sock #UNIX socket 文件,supervisorctl 会使用 chmod=0700 #socket文件的mode,默认是0700 chown=nobody:nogroup #socket文件的owner,格式:uid:gid [inet_http_server] #HTTP服务器,提供web管理界面 port=127.0.0.1:9001 #Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性 username=user #登录管理后台的用户名 password=123 #登录管理后台的密码 [supervisord] logfile=/tmp/supervisord.log #日志文件,默认是 $CWD/supervisord.log logfile_maxbytes=50MB #日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小 logfile_backups=10 #日志文件保留备份数量默认10,设为0表示不备份 loglevel=info #日志级别,默认info,其它: debug,warn,trace pidfile=/tmp/supervisord.pid #pid 文件 nodaemon=false #是否在前台启动,默认是false,即以 daemon 的方式启动 minfds=1024 #可以打开的文件描述符的最小值,默认 1024 minprocs=200 #可以打开的进程数的最小值,默认 200 [supervisorctl] serverurl=unix:///tmp/supervisor.sock #通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致 serverurl=http://127.0.0.1:9001 #通过HTTP的方式连接supervisord #包含其它配置文件 [include] files = relative/directory/*.ini #可以指定一个或多个以.ini结束的配置文件
子进程配置文件说明:
给需要管理的子进程(程序)编写一个配置文件,放在/etc/supervisor.d/目录下,以.ini作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)
如任意定义一个和脚本相关的项目名称的选项组(/etc/supervisord.d/test.conf):
#项目名 [program:blog] #脚本目录 directory=/opt/bin #脚本执行命令 command=/usr/bin/python /opt/bin/test.py #supervisor启动的时候是否随着同时启动,默认True autostart=true #当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的 autorestart=false #这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1 startsecs=1 #脚本运行的用户身份 user = test #日志输出 stderr_logfile=/tmp/blog_stderr.log stdout_logfile=/tmp/blog_stdout.log #把stderr重定向到stdout,默认 false redirect_stderr = true #stdout日志文件大小,默认 50MB stdout_logfile_maxbytes = 20MB #stdout日志文件备份数 stdout_logfile_backups = 20
五、supervisor命令说明
常用命令
supervisorctl status //查看所有进程的状态 supervisorctl stop es //停止es supervisorctl start es //启动es supervisorctl restart //重启es supervisorctl update //配置文件修改后使用该命令加载新的配置 supervisorctl reload //重新启动配置中的所有程序
注:把es换成all可以管理配置中的所有进程。直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。
Supervisor官网:http://supervisord.org
[program:EvosSite] command=dotnet /data/test.dll directory=/data user=root autorestart=true redirect_stderr=true stdout_logfile=/data/Logs/evos.log loglevel=info environment=ASPNETCORE_ENVIRONMENT=Release
配置文件
[unix_http_server] file=/var/run/supervisor/supervisor.sock [inet_http_server] port=*:9001 username=admin password=admin@kx0303 [supervisord] environment=LC_ALL='zh_CN.UTF-8',LANG='zh_CN.UTF-8' logfile=/data/log/supervisor/supervisord.log logfile_maxbytes=50MB logfile_backups=10 loglevel=info pidfile=/var/run/supervisord.pid nodaemon=false minfds=1024 minprocs=200 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor/supervisor.sock serverurl=http://192.168.10.101:9001 [include] files = supervisord.d/evos3.ini
-
安装supervisor
2017-05-09 14:54:00安装supervisor 有网安装,两种方法 第一种、用easy_install,是setuptools的功能。这是安装的首选方法。 第二种、下载包和调用命令 介绍第一种,有网且用Setuptools 如果Setuptools已经安装,且有网。... -
Supervisor
2020-06-28 18:07:27安装Supervisor yum install epel-release yum install -y supervisor systemctl enable supervisord # 开机自启动 systemctl start supervisord # 启动supervisord服务 systemctl status supervisord # 查看... -
Centos Supervisor
2019-02-11 09:10:00安装: Vim修改配置文件 ...按配置文件运行supervisor supervisord -c /etc/supervisord.conf 重启 Killsupervisord -c /etc/supervisord.conf GUI: 9001 转载于:https://www.cnbl... -
supervisor-3.4.0.tar.gz
2020-02-25 16:33:02https://blog.csdn.net/liutietuo/article/details/103632554 -
win-supervisor.zip
2020-07-03 11:54:58Windows版的supervisord 参看https://blog.csdn.net/QQ6550523/article/details/107102748 -
supervisor集群方式-supervisor-monitor
2021-10-01 22:31:19我的另一篇文章有介绍linux的进程管理工具supervisorlinux进程管理工具:supervisor_龙叔运维的博客-CSDN博客1、安装yum installsupervisor或者apt-get install supervisor2、配置supervisor有两类配置文件:2.1、主... -
supervisor的简单使用
2022-02-08 16:27:39supervisor的简单使用(一)supervisor的安装(一)ubuntu安装 :(二)centos安装 :(三)pip形式安装:(二)supervisor的结构(一)supervisord.conf配置文件:(一)[unix_http_server]:(二)[inet_http_server]:... -
supervisor使用学习
2021-12-15 15:27:25yum install supervisor 2、启动 supervisord -c /etc/supervisord.conf 3、测试用的shell脚本 vim /tmp/test.sh i=1 while [ $i -le 1000 ] do echo $i let i++ sleep 10s done 4、添加任务配置 /etc/... -
Supervisor安装
2021-07-13 09:38:48单机的airflow scheduler很容易挂掉,出现服务故障,所以使用supervisor监控进程,实现服务故障发生时,自动重启服务。 Supervisor安装 1 使用pip安装 安装supervisor 安装后的执行文件会默认安装在pip... -
Centos8配置supervisor
2022-01-11 01:59:14记录centos中supervisor守护进程中的常用命令和遇见的问题 -
Go操作supervisor xml rpc接口及注意事项
2021-09-18 13:34:08之前提到过目前我们的进程都是通过supervisor(http://supervisord.org/)这样一个进程管理软件进行管理的,也专门做过专题翻译过supervisor的一些内容:https://blog.csdn.net/weixin_39510813/category_11128455.ht -
supervisor配置参数详解-转载
2020-07-10 13:59:26Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemontools和runit有些相似, 但是与它们不一样的是, 它... -
[supervisor][xmlrpc]扩展supervisor的远程调用api
2019-10-12 09:43:16出于某些目的,我们希望supervisor的xmlrpc可以执行我们自己写的代码,而supervisor官网的文档对于扩展它的xmlrpc API这一部分的描述很模糊。这里记录一下我的使用过程。 官方文档:http://www.supervisord.org/ ... -
Python库 | ajenti.plugin.supervisor-0.14.tar.gz
2022-04-06 04:30:37资源分类:Python库 所属语言:Python 资源全名:ajenti.plugin.supervisor-0.14.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059 -
Python库 | faas_supervisor-0.8.5-py3-none-any.whl
2022-04-22 02:40:43资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:faas_supervisor-0.8.5-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059 -
Docker技术剖析--Supervisor管理
2017-09-16 18:29:30一、使用supervisor来管理进程 docker容器在启动的时候开启单个进程,比如,一个ssh或者apache的daemon服务,但我们经常需要在一个机器上开启多个服务,这个有很多办法,最简单的就是把多个启动的命令放在一个启动... -
django+celery+redis+supervisor教程代码
2017-03-07 01:35:52教程网址:http://blog.csdn.net/win_turn/article/details/60658525 -
Supervisor安装与配置(Linux/Unix进程管理工具)
2016-06-01 16:23:26原文链接:http://blog.csdn.net/xyang81/article/details/51555473Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。... -
解决supervisor unix:///var/run/supervisor.sock no such file, 亲测有效
2021-02-26 11:44:54supervisor一个开源的后台托管程序,在使用过程中可能是因为机器宕机,导致supervisor没有正常关掉,在执行sudosupervisorctl,想查看进程状态时,提示 unix:///var/run/supervisor.sock no such file 解决 那么...