Supervisor入门使用

Linux 之 supervisor安装和使用 运行Supervisor的后台服务,它用来启动和管理那些你需要Supervisor管理的子进程,响应客户端发来的请求,重启意外退出的子进程,将子进程的stdout和stderr写入日志,响应事件等。它是Supervisor最核心的部分。 阅读详情

Supervisor入门使用

目录

一、简介

简介部分参考博文

https://www.cnblogs.com/hanyifeng/p/6728151.html

supervisor与launchd,daemontools,runit等程序有着相同的功能,与某些程序不同的是,它并不作为“id 为 1的进程”而替代init。相反,它用于控制应用程序,像启动其它程序一样,通俗理解就是,把Supervisor服务管理的进程程序,它们作为supervisor的子进程来运行,而supervisor是父进程。supervisor来监控管理子进程的启动关闭和异常退出后的自动启动。

1、Supervisor与系统自带init 进程管理比较

方便:有些编译运行的程序,在安装完成后,需要为他们编写启动停止管理脚本,写入和维护可能很痛苦,而且进程在异常崩溃结束时,许多程序都不会正确重新启动的。Supervisord启动管理的程序进程是作为其子进程来运行的,并且可以配置为在进程崩溃停止时自动重新启动它们。

准确:在Unix上的进程通常很难获得准确的up/down状态。Pidfiles经常说谎。Supervisord将进程作为子进程启动,所以它总是知道其子进程的正确的up/down状态,可以方便的对这些数据进行查询

进程分组:进程支持分组启动和停止,也支持启动顺序,即‘优先级’,supervisor允许为进程分配优先级,并允许用户通过supervisorctl客户端发出命令,如“全部启动”和”重新启动所有“,它们以预先分配的优先级顺序启动。还可以将进程分为”进程组“,一组逻辑关联的进程可以作为一个单元停止或启动。

2、Supervisor的特点

简单:supervisor通过简单的INI风格的配置文件进行配置管理,易于学习,并提供了许多每个进程选项,如重新启动失败的进程和日志的自动切割。

集中:supervisor提供一个start、stop和监控进程的地方,进程可以单独或分组进行控制。可以通过supervisor的本地或远程命令行管理和web管理(一般为了安全,web通常需要禁用)

高效:supervisor通过fork/exec启动子进程,子进程需要前台运行,操作系统进程终止时去通知supervisor,而不像一些我们需要写脚本去定期轮询PID文件来重新启动失败的进程。

可扩展:supervisor有一个简单的事件(event)通知协议,还有一个用于控制的XML-RPC接口,可以用Python开发人员来扩展构建。

兼容:supervisor由Python编写,在除Windows操作系统以外基本都支持,如linux,Mac OS x,solaris,FreeBSD系统

3、Supervisor的组建构成

Supervisord:supervisor服务器的进程名是supervisord。它主要负责在自己的调用中启动子程序,响应客户端的命令,重新启动崩溃或退出的进程,记录其子进程stdout和stderr的输出,以及生成和处理对应于子进程生命周期中的”event“

服务器进程使用的配置文件,通常路径存放在/etc/supervisord.confa中。此配置文件是INI格式的配置文件。

supervisorctl:supervisor命令行的客户端名称是supervisorctl。它为supervisord提供了一个类似于shell的交互界面。使用supervisorctl,用户可以查看不同的supervisord进程列表,获取控制子进程的状态,如停止和启动子进程

web服务器:一个可以通过Web界面来查看和控制进程的状态,默认监听在9001上。

二、安装和配置

本次测试环境

主机名ip系统
auto10.0.0.6/24Centos 7.5

1、安装

[root@auto ~]# yum install supervisor -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                                                                                  | 8.4 kB  00:00:00     
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                                                                                                  | 3.6 kB  00:00:00     
docker-ce-edge                                                                                                                                                        | 3.5 kB  00:00:00     
docker-ce-stable                                                                                                                                                      | 3.5 kB  00:00:00     
epel                                                                                                                                                                  | 3.2 kB  00:00:00     
extras                                                                                                                                                                | 3.4 kB  00:00:00     
nginx                                                                                                                                                                 | 2.9 kB  00:00:00     
updates                                                                                                                                                               | 3.4 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package supervisor.noarch 0:3.1.4-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================
 Package                                        Arch                                       Version                                            Repository                                Size
=============================================================================================================================================================================================
Installing:
 supervisor                                     noarch                                     3.1.4-1.el7                                        epel                                     446 k

Transaction Summary
=============================================================================================================================================================================================
Install  1 Package

Total download size: 446 k
Installed size: 2.2 M
Downloading packages:
supervisor-3.1.4-1.el7.noarch.rpm                                                                                                                                     | 446 kB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : supervisor-3.1.4-1.el7.noarch                                                                                                                                             1/1 
  Verifying  : supervisor-3.1.4-1.el7.noarch                                                                                                                                             1/1 

Installed:
  supervisor.noarch 0:3.1.4-1.el7                                                                                       
Complete!
#生成配置文件
[root@auto ~]# echo_supervisord_conf>/etc/supervisord.conf
[root@auto ~]# cat /etc/supervisord.conf
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
;  - Shell expansion ("~" or "$HOME") is not supported.  Environment
;    variables can be expanded using this syntax: "%(ENV_HOME)s".
;  - Comments must have a leading space: "a=b ;comment" not "a=b;comment".

[unix_http_server]
file=/tmp/supervisor.sock   ; (socket 文件的路径)
;chmod=0700                 ; socket 文件权限 (default 0700)
;chown=nobody:nogroup       ; socket 文件属主:属组
;username=user              ; (启动http的用户 (open server))
;password=123               ; (默认的密码 (open server))

;[inet_http_server]         ; 默认禁用tcp监听的http 服务
;port=127.0.0.1:9001        ; (指定监听在本机ip地址和端口)
;username=user              ; (默认启动http服务的用户)
;password=123               ; (默认的密码)

[supervisord]
logfile=/tmp/supervisord.log ; (主日志文件的存放位置,默认在程序的工作启动目录)
logfile_maxbytes=50MB        ; (主日志文件的最大值,之后进行切割;默认 50MB)
logfile_backups=10           ; (主日志文件备份的数目;默认 10)
loglevel=info                ; (日志级别;默认是info; 其它: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord 运行时的pidfile路径;默认 supervisord.pid)
nodaemon=false               ; (如果为true,程序就以前台运行;默认是 false)
minfds=1024                  ; (min. 启动有效的文件描述符数目;默认 1024)
minprocs=200                 ; (min. 有效进程描述符;默认 200)
;umask=022                   ; (进程文件创建的默认权限;默认 022)
;user=chrism                 ; (默认是当前启动的用户)
;identifier=supervisor       ; (supervisord 标识符, 默认是'supervisor')
;directory=/tmp              ; (默认启动时间不会切换)
;nocleanup=true              ; (在启动时不清理临时文件;默认值为false)
;childlogdir=/tmp            ; ('AUTO' 子进程日志目录, 默认 $TEMP)
;environment=KEY="value"     ; (增加一个环境变量键值对:key=”value“)
;strip_ansi=false            ; (在log日志里去掉ansi转义编码; 默认是 false)

; 下面的部分选项必须保留在RPC的配置文件中
; (supervisorctl/web 接口) 使用以下配置来管理
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/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

; 以下是被管理的示例程序显示所有可能用到的配置。
; 创建一个或“多个”程序: 要遵循以下的键值对规则。
; supervisor.

;[program:theprogramname]
;command=/bin/cat              ; 程序的启动命令 (使用绝对路径)
;process_name=%(program_name)s ; process_name 表示 (默认是 %(program_name)s)
;numprocs=1                    ; 启动时的进程数 (默认 1)
;directory=/tmp                ; 执行时切换到的目录 (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; 相对启动优先级(default 999)
;autostart=true                ; 是否跟随supervisord程序启动该监控程序 (default: true)
;startsecs=1                   ; # 在设定时间内,程序必须保持运行 (def. 1)
;startretries=3                ; 当启动失败时尝试的最大次数(default 3)
;autorestart=unexpected        ; 如果退出后,什么状态退出的去重启,默认非意外的(def: unexpected)
;exitcodes=0,2                 ; 'expected' 符合退出代码之后去重启 (default 0,2)
;stopsignal=QUIT               ; 用于杀死进程的信号 (default TERM)
;stopwaitsecs=10               ; 最大等待秒数 SIGKILL (default 10)
;stopasgroup=false             ; 发送停止信号到Unix进程组 (default false)
;killasgroup=false             ; SIGKILL UNIX进程组 (def false)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; 是否开启程序标准错误输出的重定向 (default false)
;stdout_logfile=/a/path        ; 标准输出路径; default AUTO
;stdout_logfile_maxbytes=1MB   ; 文件最大大小 # 日志文件进行切割 (default 50MB)
;stdout_logfile_backups=10     ; # 日志文件备份数目 (default 10)
;stdout_capture_maxbytes=1MB   ; ‘捕获模式’中的字节数 (default 0)
;stdout_events_enabled=false   ; 在标准输出写入文件时发出事件 (default false)
;stderr_logfile=/a/path        ; 标准错误输出, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; 文件最大大小 # 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"       ; 添加进程环境变量 (def no adds)
;serverurl=AUTO                ; 覆盖serverurl计算 (childutils)

;下面是event事件部分所有可能设置的值,大部分同上面一样。
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.

;[eventlistener:theeventlistenername]
;command=/bin/eventlistener    ; 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)
;events=EVENT                  ; event notif. types to subscribe to (req'd)
;buffer_size=10                ; event buffer queue size (default 10)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=-1                   ; the relative start priority (default -1)
;autostart=true                ; start at supervisord start (default: true)
;startsecs=1                   ; # of secs prog must stay up to be running (def. 1)
;startretries=3                ; max # of serial start failures when starting (default 3)
;autorestart=unexpected        ; autorestart if exited after running (def: unexpected)
;exitcodes=0,2                 ; 'expected' exit codes used with autorestart (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
;killasgroup=false             ; SIGKILL the UNIX process group (def false)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=false         ; redirect_stderr=true is not allowed for eventlisteners
;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_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_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A="1",B="2"       ; process environment additions
;serverurl=AUTO                ; override serverurl computation (childutils)

; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.

;[group:thegroupname]
;programs=progname1,progname2  ; 这里的progname1,progname2就是定义的监控管理程序的名字,如[program:x]这里就是x
;priority=999                  ; the relative start priority (default 999)

;  下面的 [include] 选项只能包含一个files 设置,功能是定义supervisor管理程序的配置文件,可以单独的移除去,和主配置文件分开,方便。
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

;[include]
;files = relative/directory/*.ini         ;定义管理监控程序的配置文件的路径

2、管理supervisor

1)supervisord -c /etc/supervisor.conf 服务端启动

上面命令会让supervisor在后台运行,后续管理命令直接在bash界面执行

supervisorctl status    #查看状态
supervisorctl stop usercenter    #停止子进程
supervisorctl start usercenter    #开启子进程
supervisorctl restart usercenter    #重启子进程
supervisorctl reread     #读取有更新(增加)的配置文件,不会启动新添加的程序
supervisorctl update #重启配置文件修改过的程序

2)supervisorctl -c /etc/supervisor.conf 客户端启动

这个命令会进入 supervisorctl 的 shell 界面,然后可以执行不同的命令了:

> status    # 查看程序状态    
> stop tomcat   # 关闭 tomcat 程序    
> start tomcat  # 启动 tomcat 程序    
> restart tomcat    # 重启 tomcat 程序    
> reread    # 读取有更新(增加)的配置文件,不会启动新添加的程序    
> update    # 重启配置文件修改过的程序
> exit   # 退出

3)web界面

后续演示

2、配置supervisor管理nginx进程

#修改配置文件 
[root@auto supervisord.d]# vim supervisor.conf 

[include]
files = /etc/supervisord.d/*.conf
#(此处类似nginx的include conf.d/*.conf)

注意!!!supervisor不能管理daemon进程,nginx 是daemon进程,如果要管理,需要在nginx.conf配置文件的http标签外增加 daemon off; 此处只是测试适用。

# 修改nginx配置
[root@auto super]# vim /usr/local/nginx/conf/nginx.conf


user  nginx;
worker_processes  1;
daemon off;
events {
    worker_connections  1024;
}
http {
.......

配置supervisor管理nginx的配置文件

[root@auto supervisord.d]# pwd
/etc/supervisord.d
[root@auto supervisord.d]# cat nginx_test.conf 

[program:nginx]
command=/usr/local/nginx/sbin/nginx
stdout_logfile=/tmp/nginx.log
stderr_logfile=/tmp/nginx_err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=50     #这里最好配置 
priority=1    

运行supervisor并查看状态

#运行前查看nginx进程
[root@auto etc]# ps -ef|grep nginx
root       3311   1991  0 17:21 pts/1    00:00:00 grep --color=auto nginx

#运行supervisor
[root@auto supervisord.d]# supervisord -c /etc/supervisord.conf
[root@auto supervisord.d]# supervisorctl status 
nginx                            STARTING  
[root@auto supervisord.d]# supervisorctl status 
nginx                            RUNNING   pid 3342, uptime 0:01:36

#验证nginx进程
[root@auto supervisord.d]# !ps
ps -ef|grep nginx
root       3342   3302  0 17:23 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      3343   3342  0 17:23 ?        00:00:00 nginx: worker process
root       3360   1991  0 17:25 pts/1    00:00:00 grep --color=auto nginx
#nginx开启成功

3、配置supervisor管理mysql进程

配置文件无需修改 只需要在/etc/supervisord.d/内增加管理mysq的配置文件。与nginx的类似

[root@auto supervisord.d]# vim mysql.conf 

[program:mysql]
command=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/auto.err --pid-file=/usr/local/mysql/data/auto.pid --port=3306
stdout_logfile=/tmp/mysql.log
stderr_logfile=/tmp/mysql_err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=50
priority=3

适用supervisorctl客户端命令平滑增加mysql管理

[root@auto supervisord.d]# supervisorctl reread
mysql: available
[root@auto supervisord.d]# supervisorctl update
mysql: added process group
#验证
[root@auto supervisord.d]# supervisorctl status
mysql                            RUNNING   pid 3512, uptime 0:00:15
nginx                            RUNNING   pid 3342, uptime 0:07:55

4、配置supervisor管理php进程

配置文件无需修改 只需要在/etc/supervisord.d/内增加管理php的配置文件。与nginx的类似,由于php的daemon进程,需要在配置文件php-fpm.conf内进行修改

[root@auto super]# vim /usr/local/nginx/conf/nginx.conf
;daemonize = yes   ;默认配置
daemonize = no
#配置supervisor管理php配置文件
[root@auto supervisord.d]# vim php.conf 

[program:php]
command=/usr/local/php/sbin/php-fpm
stdout_logfile=/tmp/php.log
stderr_logfile=/tmp/php_err.log
autostart=true
autorestart=true
startsecs=20
stopwaitsecs=30
priority=2          

适用supervisorctl客户端命令平滑增加php管理

[root@auto supervisord.d]# supervisorctl reread
php: available
[root@auto supervisord.d]# supervisorctl update
php: added process group
#验证
[root@auto supervisord.d]# supervisorctl status
mysql                            RUNNING   pid 3512, uptime 0:04:41
nginx                            RUNNING   pid 3342, uptime 0:12:21
php                              RUNNING   pid 3658, uptime 0:00:21

5、web界面管理supervisor进程

修改配置文件

[root@auto supervisord.d]# vim /etc/supervisor.conf 
#下面是修改部分  

[inet_http_server]         ; inet (TCP) server disabled by default
port=10.0.0.6:9001        ; (ip_address:port specifier, *:port for all iface)
username=admin             ; (default is no username (open server))
password=admin123               ; (default is no password (open server))

保存后平滑启动

[root@auto supervisord.d]# supervisorctl update

打开浏览器 登陆http://10.0.0.6:9001,根据配置文件内的username和password登陆管理

该界面可以对supervisor管理的所有进程进行管理 关闭 重启 等 ,也能查看相应的运行时间和启动失败日志等信息。

6、测试

1)测试1

尝试web关闭nginx 返回auto主机进行查看

[root@auto supervisord.d]# ps -ef|grep nginx
root       3679   1991  0 17:39 pts/1    00:00:00 grep --color=auto nginx

#发现nginx已经关闭

2)测试2

尝试手动停止nginx进程,观察supervisor是否会对nginx进程重启

测试结果可知,无论是正常关闭nginx还是pkill强制关闭nginx,supervisor都会重新启动,验证成功

三、总结

supervisor在生产中还是比较实用的,可以管理很大一部分服务,对于本身就是daemon运行的程序,实际意义不是很大(个人理解),对于服务启动速度,测试结果是和配置文件内的startsecs有关,从手动执行 supervisorctl start nginx命令开始,大约过了startsecs配置的时间,才会真正的更新是否开启状态,其实真正的服务启动情况和具体服务有关,这个时间可以根据实际情况处理。至于stopwaitsecs的适用我还没真正掌握,测试时候如果不配置该时间,服务会无法启动,个人暂时理解为执行start的时候会在stopwaitsecs时间内对服务进行检测,如果在该时间内还没启动,则视为失败,后续继续测试验证。

不想当厨子的裁缝不是好司机

【Linux】Supervisor使用详解 【Linux】Supervisor使用详解 一、supervisor简介 ​ Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。superv 阅读详情

相关推荐

Linux安装Supervisor

Supervisor是一个用Python编写的客户端/服务器系统,它允许其用户监控和控制一系列与进程相关的服务。它主要被用于在Linux系统上管理进程。

wyh757787026的博客 680

Linux进程管理工具——supervisor

Supervisor (http://supervisord.org) 是一个用 [Python] 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

General_zy的博客 3035

ubuntu 下的supervisor 配置入门

Linux的后台进程运行有好几种方法,例如nohup,screen等,但是,如果是一个服务程序,要可靠地在后台运行,我们就需要把它做成daemon,最好还能监控进程状态,在意外结束时能自动重启。 supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。 安装superviso

不积跬步,无以至千里;不积小流,无以成江海! 2976

Linux:Supervisor进程管理

Supervisor是一个开源的进程管理工具,主要用于在类Unix系统(包括Linux和macOS等)上监控和管理长时间运行的进程(守护进程)。Supervisor通过一个简易的INI风格的配置文件提供了诸多针对单个进程的选项进行配置,比如自动重启失败的进程和自动日志轮转。同时,Supervisor还提供本地或远程的命令行和Web界面来启动、停止和监控进程。

m0_37559973的博客 2142

PP触发EWM产生PMR捡配

PP触发EWM产生PMR捡配 前言 PMR: Production Material Request 在流程订单/生产订单下达后,可以在EWM中产生PMR,在EWM中, PMR其实代表了ERP中的流程订单/生产订单。 You can use SAP EWM in conjunction with the following PP application components: • Production Orders • Process Orders • Repetitive Manufacturing •

ZevYang的博客 1918

linux 内核vxlan收发包流程

1.vxlan口收包处理流程 前面几章详细介绍了vxlan接口的使用,而且已经知道vxlan是 MAC IN UDP中的封装,因此,在解封装之前,一切按照原有流程走,在此复习一下内核收发包流程(驱动层的数据处理这次不再解析,直接从__netif_receive_skb_core开始) #物理网卡处理中断,触发softirq i40e_intr └─napi_schedule_irqoff #i40e softirq把包放到per cpu backlog,触发softirq i40e_napi_p

魏言华的博客 3826

Supervisor的安装与使用入门

Supervisor的安装与使用入门 http://www.tuicool.com/articles/Ejm2u2

.... 430

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 406

python-supervisor入门详解

python-supervisor入门详解 找了很多篇关于python-supervisor入门教程这是我觉得最通俗易懂的。分享给大家 https://www.jianshu.com/p/ac6c84a2f415

qi_cun的博客 200

人工蜂群优化算法(ABC)详解:原理、实现与应用

人工蜂群算法(Artificial Bee Colony, ABC)是Karaboga于2005年提出的一种群体智能优化算法,其灵感来源于蜜蜂群体在自然界中高效的采蜜行为。该算法通过模拟雇佣蜂、观察蜂和侦察蜂三种角色的分工协作来寻找最优解。在ABC算法中,每个潜在的解决方案被视为一个“食物源”,其质量由适应度函数评估。雇佣蜂负责在已知优质食物源附近进行局部开采;观察蜂根据雇佣蜂分享的信息,以一定概率选择并跟进优质食物源;侦察蜂则随机探索新区域,防止种群陷入局部最优。

qq_42212808的博客 393

华为非AI方向0603笔试真题-爆破小游戏(详细思路+多语言题解)

华为非AI方向0603笔试第二题【爆破小游戏】,提供详细思路讲解以及代码实现。

qq_45776114的博客 358

supervisor 重启_supervisor入门

supervisor是最近接触到的,用于管理Linux上的Java应用。supervisor官网:http://www.supervisord.org/introduction.html看一下官网的定义:Supervisor是一个客户端/服务器系统,它允许用户在类unix操作系统上控制多个进程supervisor主要包含以下四个部分:supervisord:这个是supervisor服务的主要管理...

weixin_39961369的博客 2455

基于 Qt C++ 的智能工厂数字孪生系统

你想要实现一个基于 Qt C++ 的智能工厂数字孪生系统,核心是 **Qt 3D** 场景搭建 + **实时数据驱动** 设备模型。下面我将为你提供一个完整的解决方案,包含 **核心思路、实现步骤、完整代码示例** 和 **注意事项**。| **渲染层** | 3D 场景搭建、设备模型加载、实时动画渲染、用户交互。| **业务逻辑层** | 数据处理(滤波、转换)、设备状态管理、动画逻辑控制。| **数据层** | 实时采集设备数据(如传感器、PLC、MES 系统),提供数据接口。

寒寒豆豆软件公司的博客 193

supervisor 管理mysql_Supervisor入门使用

一、简介简介部分参考博文supervisor与launchd,daemontools,runit等程序有着相同的功能,与某些程序不同的是,它并不作为“id 为 1的进程”而替代init。相反,它用于控制应用程序,像启动其它程序一样,通俗理解就是,把Supervisor服务管理的进程程序,它们作为supervisor的子进程来运行,而supervisor是父进程。supervisor来监控管理子进程...

weixin_39832875的博客 688

Android功耗系列专题理论之十三:MTK平台待机功耗问题分析方法

摘要:本文详细分析了MTK平台待机功耗问题的调试方法,重点介绍了SPM电源管理机制、26M时钟控制逻辑以及系统深睡眠状态的判断标准。文章提供了完整的Debug流程,包括日志抓取、唤醒源分析、SCP睡眠状态检查以及时钟/LDO状态排查等实用技巧,并给出硬件漏电点和软件配置异常的排查方案。针对不同模块(Modem/Conn/SSPM等)提供了具体的电源管理绕过命令,适用于功耗问题调试和低功耗模式验证场景。

559

零承诺的启动之路:详解 SAP BTP 的 Pay-As-You-Go for SAP BTP(含案例与迁移策略)

SAP BTP的Pay-As-You-Go(PAYG)模式为零承诺的按需付费方案,适合PoC和小规模上线场景。它提供生产环境直接启用服务的能力,按月后付标准目录价,无预付和折扣。PAYG可与BTP企业协议(BTPEA/CPEA)混合使用,用量稳定后可平滑迁移至CPEA获取更好财务条款。关键优势在于灵活开启/关闭服务,支持通过SAP Discovery Center估算费用,并配合成本治理工具控制支出。该模式适用于创新项目初期,当业务规模可预测时再考虑转为承诺型消费模式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 248

supervisor nginx_Supervisor 从入门到放弃

前言Supervisor是一个客户端/服务器系统,允许其用户在类UNIX操作系统上控制许多进程。(官方解释)简单点来讲,就是一个监控脚本运行的工具,不过他可以统一化管理,laravel的队列文档上也有相关使用方式方法,例如定时脚本的启动、重启、关闭和日志监控swoole的启动、重启、关闭和日志监控 (众所周知,swoole大部分的特性都只能在cli中运行)redis的启动、重启、关闭和日志监控 (...

weixin_39632471的博客 120

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

supervisor入门应用

supervisor是一个linux进程管理应用. 安装 # 我们通过yum安装,先按照epel源 yum install -y epel-release # 安装supervisor yum install -y supervisor 安装位置默认在 /usr/bin/supervisorctl 应用

鸭梨的博客 1026

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Supervisor 入门指南一篇就够 —— 安装、项目配置与常见报错速查

Supervisor是一个用Python编写的进程管理工具,能够将普通进程转为后台守护进程并自动重启。本文介绍了Supervisor的安装方法(支持apt/yum/pip/源码安装)、项目配置三步骤(主配置文件设置、创建项目专属配置、载入启动)以及常用管理命令。同时总结了常见报错解决方案,如sock文件丢失、进程退出过快、配置文件缺失等问题。Supervisor支持热加载配置,建议将日志存放在/var/log等持久目录。通过本文指导,可快速实现Python/Node/Go等进程的稳定托管。

haolove527的专栏 1253

Erlang之supervisor入门

1.概念: supervisor是OTP框架四大行为之一,它用于监视别的进程,当一个进程崩溃是,它能够快速重启该进程,并根据不同的策略做出不同的行为。 2.常用函数: 1.start_link({local/global,NAME}, MODULE, Args). 创建一个supervisor的进程服务器,local为本地进程,global为全局进程,NAME为该进程名,...

fbher的博客 1305

Supervisor快速入门 | 使用Supervisor守护Nginx进程

守护进程在我们生产环境的时候,有些任务是不能停止的,否则业务就会受到影响,那么如何保证这些任务的高可用呢?那就需要用到我们的守护进程了,比方说我们的进程运行挂掉之后自动恢复等等,这些都可以利用工具来实现,针对不同的项目可以使用不同的工具。例如PM2、Forever、 Python底层写的supervisor 等等...Supervisor介绍Supervisor ...

博客简介 888

Supervisor 从入门到放弃

前言 Supervisor是一个客户端/服务器系统,允许其用户在类UNIX操作系统上控制许多进程。(官方解释) 简单点来讲,就是一个监控脚本运行的工具,不过他可以统一化管理,laravel的队列文档上也有相关使用方式方法,例如 定时脚本的启动、重启、关闭和日志监控 swoole的启动、重启、关闭和日志监控 (众所周知,swoole大部分的特性都只能在cli中运行) redis的启动、重启、...

CrazyCodes 208

Supervisor 入门使用

Supervisor 是一个用 Python 写的一套通用的进程管理程序,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)并监控进程状态,除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。Supervisor 可以运行在 Linux、Mac OS X 上。如前所述,supervisor 是

a549654065的博客 554

supervisor入门到精通

1.介绍 Supervisor是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上。Supervisor 官方版目前只能运行在 Python 2.4 以上版本,但是还无法运行在 Python 3 上,不过已经有一个 Python 3 的移植版supervisor-py3k。 在一个分布式环境中,每台机器上可能需要启动和停止多个...

weixin_30662011的博客 328

supervisor php cli,Supervisor 从入门到放弃

前言Supervisor是一个客户端/服务器系统,允许其用户在类UNIX操作系统上控制许多进程。(官方解释)简单点来讲,就是一个监控脚本运行的工具,不过他可以统一化管理,laravel的队列文档上也有相关使用方式方法,例如定时脚本的启动、重启、关闭和日志监控swoole的启动、重启、关闭和日志监控 (众所周知,swoole大部分的特性都只能在cli中运行)redis的启动、重启、关闭和日志监控 (...

weixin_39858124的博客 225
上一篇: ESXi设置虚拟机随宿主机自动启动(转)
下一篇: CentOS更换源
javaee1234
博客等级 码龄10年 49粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值