Linux进程守护——Supervisor 使用记录

0、旁白

Supervisor是个父进程,你要守护的进程会以Supervisor的子进程形式存在,所以老子才可以管儿子

官网链接:http://supervisord.org/

1、安装

easy_install supervisor

2、配置

echo_supervisord_conf > /etc/supervisord.conf #生成配置文件

3、启动

supervisord -c /etc/supervisord.conf # 启动Supervisor进程,父进程不起来,什么都不要说了


# 父进程起来之后,就用【supervisorctl】这个工具管理子进程

supervisorctl -c /etc/supervisord.conf status 查看状态

supervisorctl -c /etc/supervisord.conf reload 重新载入配置文件

supervisorctl -c /etc/supervisord.conf start [all]|[x] 启动所有/指定的程序进程

supervisorctl -c /etc/supervisord.conf stop [all]|[x] 关闭所有/指定的程序进程

4、参数

[unix_http_server]

参数选项 中文白话
file=/tmp/supervisor.sock socket文件的路径,supervisorctl用XML_RPC和supervisord通信就是通过它进行的。如果不设置的话,supervisorctl也就不能用了不设置的话,默认为none。 非必须设置
;chmod=0700 这个简单,就是修改上面的那个socket文件的权限为0700不设置的话,默认为0700。 非必须设置
;chown=nobody:nogroup 这个一样,修改上面的那个socket文件的属组为user.group不设置的话,默认为启动supervisord进程的用户及属组。非必须设置
;username=user 使用supervisorctl连接的时候,认证的用户不设置的话,默认为不需要用户。 非必须设置
;password=123 和上面的用户名对应的密码,可以直接使用明码,也可以使用SHA加密如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d默认不设置。非必须设置

;[inet_http_server]

侦听在TCP上的socket,Web Server和远程的supervisorctl都要用到他 不设置的话,默认为不开启。非必须设置

参数选项 中文白话
;port=127.0.0.1:9001 这个是侦听的IP和端口,侦听所有IP用 :9001或*:9001。 这个必须设置,只要上面的[inet_http_server]开启了,就必须设置它
;username=user 这个和上面的uinx_http_server一个样。非必须设置
;password=123 这个也一个样。非必须设置

[supervisord]

这个主要是定义supervisord这个服务端进程的一些参数的这个必须设置,不设置,supervisor就不用干活了

参数选项 中文白话
logfile=/tmp/supervisord.log 这个是supervisord这个主进程的日志路径,注意和子进程的日志不搭嘎。默认路径$CWD/supervisord.log,$CWD是当前目录。。非必须设置
logfile_maxbytes=50MB 这个是上面那个日志文件的最大的大小,当超过50M的时候,会生成一个新的日志文件。当设置为0时,表示不限制文件大小默认值是50M,非必须设置。
logfile_backups=10 日志文件保持的数量,上面的日志文件大于50M时,就会生成一个新文件。文件数量大于10时,最初的老文件被新文件覆盖,文件数量将保持为10当设置为0时,表示不限制文件的数量。默认情况下为10。。。非必须设置
loglevel=info 日志级别,有critical, error, warn, info, debug, trace, or blather等。默认为info。。。非必须设置项
pidfile=/tmp/supervisord.pid supervisord的pid文件路径。默认为$CWD/supervisord.pid。。。非必须设置
nodaemon=false 如果是true,supervisord进程将在前台运行。默认为false,也就是后台以守护进程运行。。。非必须设置
minfds=1024 这个是最少系统空闲的文件描述符,低于这个值supervisor将不会启动。系统的文件描述符在这里设置cat /proc/sys/fs/file-max。默认情况下为1024。。。非必须设置
minprocs=200 最小可用的进程描述符,低于这个值supervisor也将不会正常启动。ulimit -u这个命令,可以查看linux下面用户的最大进程数。默认为200。。。非必须设置
;umask=022 进程创建文件的掩码。默认为022。。非必须设置项
;user=chrism 这个参数可以设置一个非root用户,当我们以root用户启动supervisord之后。我这里面设置的这个用户,也可以对supervisord进行管理。默认情况是不设置。。。非必须设置项
;identifier=supervisor 这个参数是supervisord的标识符,主要是给XML_RPC用的。当你有多个supervisor的时候,而且想调用XML_RPC统一管理,就需要为每个supervisor设置不同的标识符了。默认是supervisord。。。非必需设置
;directory=/tmp 这个参数是当supervisord作为守护进程运行的时候,设置这个参数的话,启动supervisord进程之前,会先切换到这个目录。默认不设置。。。非必须设置
;nocleanup=true 这个参数当为false的时候,会在supervisord进程启动的时候,把以前子进程产生的日志文件(路径为AUTO的情况下)清除掉。有时候咱们想要看历史日志,当然不想日志被清除了。所以可以设置为true。默认是false,有调试需求的同学可以设置为true。。。非必须设置
;childlogdir=/tmp 当子进程日志路径为AUTO的时候,子进程日志文件的存放路径。默认路径是这个东西,执行下面的这个命令看看就OK了,处理的东西就默认路径python -c "import tempfile;print tempfile.gettempdir()"。非必须设置
;environment=KEY="value" 这个是用来设置环境变量的,supervisord在linux中启动默认继承了linux的环境变量,在这里可以设置supervisord进程特有的其他环境变量。supervisord启动子进程时,子进程会拷贝父进程的内存空间内容。 所以设置的这些环境变量也会被子进程继承。小例子:environment=name="haha",age="hehe"。默认为不设置。。。非必须设置
;strip_ansi=false 这个选项如果设置为true,会清除子进程日志中的所有ANSI 序列。什么是ANSI序列呢?就是我们的\n,\t这些东西。默认为false。。。非必须设置

[rpcinterface:supervisor]

这个选项是给XML_RPC用的,当然你如果想使用supervisord或者web server 这个选项必须要开启的

[supervisorctl]

参数选项 中文白话
serverurl=unix:///tmp/supervisor.sock 这个是supervisorctl本地连接supervisord的时候,本地UNIX socket路径,注意这个是和前面的[unix_http_server]对应的默认值就是unix:///tmp/supervisor.sock 非必须设置
;serverurl=http://127.0.0.1:9001 这个是supervisorctl远程连接supervisord的时候,用到的TCP socket路径注意这个和前面的[inet_http_server]对应。默认就是http://127.0.0.1:9001 非必须项
;username=chris 用户名默认空。非必须设置
;password=123 密码默认空。。非必须设置
;prompt=mysupervisor 输入用户名密码时候的提示符默认supervisor。。非必须设置
;history_file=~/.sc_history 这个参数和shell中的history类似,我们可以用上下键来查找前面执行过的命令。默认是no file的。。所以我们想要有这种功能,必须指定一个文件。。。非必须设置

猜你喜欢

转载自www.cnblogs.com/fengchi/p/10124343.html