博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SUPERVISOR进程管理器配置指南
阅读量:7089 次
发布时间:2019-06-28

本文共 4489 字,大约阅读时间需要 14 分钟。

1. supervisor简介

1.1. 官网

1.2. 介绍

Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemontools和runit有些相似, 但是与它们不一样的是, 它不是作为init(进程号pid是1)运行. 它是被用来控制进程, 并且它在启动的时候和一般程序并无二致. 

那么通俗点,它的作用是什么?你的Nginx,Tomcat,memcache,Redis...会崩么,不会?好吧,那你自己写的服务器监测脚本呢?好吧,不要再纠结了,交给Supervisor吧,它会帮你维护这些,即使它们不小心崩了,Supervisor会帮你看住它们,维护它们。

2. 安装和配置

2.1. 安装

$apt-get install python-setuptools$easy_install supervisor$echo_supervisord_conf > /etc/supervisord.conf

2.2. 配置

$nano /etc/supervisord.conf

2.3. (program)配置模板

[program:cat]command=/bin/catprocess_name=%(program_name)snumprocs=1directory=/tmpumask=022priority=999autostart=trueautorestart=truestartsecs=10startretries=3exitcodes=0,2stopsignal=TERMstopwaitsecs=10user=chrismredirect_stderr=falsestdout_logfile=/a/pathstdout_logfile_maxbytes=1MBstdout_logfile_backups=10stdout_capture_maxbytes=1MBstderr_logfile=/a/pathstderr_logfile_maxbytes=1MBstderr_logfile_backups=10stderr_capture_maxbytes=1MBenvironment=A="1",B="2"serverurl=AUTO

简化模板

[program:test]command=python test.pydirectory=/home/supervisor_test/autorestart=truestopsignal=INTuser=rootstdout_logfile=test_out.logstdout_logfile_maxbytes=1MBstdout_logfile_backups=10stdout_capture_maxbytes=1MBstderr_logfile=test_err.logstderr_logfile_maxbytes=1MBstderr_logfile_backups=10stderr_capture_maxbytes=1MB

2.4. (program)配置说明

;*为必须填写项;*[program:应用名称][program:cat];*命令路径,如果使用python启动的程序应该为 python /home/test.py, ;不建议放入/home/user/, 对于非user用户一般情况下是不能访问command=/bin/cat;当numprocs为1时,process_name=%(program_name)s;当numprocs>=2时,%(program_name)s_%(process_num)02dprocess_name=%(program_name)s;进程数量numprocs=1;执行目录,若有/home/supervisor_test/test1.py;将directory设置成/home/supervisor_test;则command只需设置成python test1.py;否则command必须设置成绝对执行目录directory=/tmp;掩码:--- -w- -w-, 转换后rwx r-x w-xumask=022;优先级,值越高,最后启动,最先被关闭,默认值999priority=999;如果是true,当supervisor启动时,程序将会自动启动autostart=true;*自动重启autorestart=true;启动延时执行,默认1秒startsecs=10;启动尝试次数,默认3次startretries=3;当退出码是0,2时,执行重启,默认值0,2exitcodes=0,2;停止信号,默认TERM;中断:INT(类似于Ctrl+C)(kill -INT pid),退出后会将写文件或日志(推荐);终止:TERM(kill -TERM pid);挂起:HUP(kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同;从容停止:QUIT(kill -QUIT pid);KILL, USR1, USR2其他见命令(kill -l),说明1stopsignal=TERMstopwaitsecs=10;*以root用户执行user=root;重定向redirect_stderr=falsestdout_logfile=/a/pathstdout_logfile_maxbytes=1MBstdout_logfile_backups=10stdout_capture_maxbytes=1MBstderr_logfile=/a/pathstderr_logfile_maxbytes=1MBstderr_logfile_backups=10stderr_capture_maxbytes=1MB;环境变量设置environment=A="1",B="2"serverurl=AUTO

2.5. (inet_http_server)配置说明

可以使用浏览器查看和控制进程状态

[inet_http_server]         ; inet (TCP) server disabled by defaultport=0.0.0.0:9001          ; (ip_address:port specifier, *:port for all iface)username=user              ; 用户名 (default is no username (open server))password=123               ; 密码 (default is no password (open server))

3. 启动与关闭

3.1. 启动supervisord

$supervisord -c /etc/supervisord.conf

3.2. 关闭supervisord

$supervisorctl shutdown

3.3. 重新载入配置

$supervisorctl reload

说明1:

信号名称 数字表示 说明
SIGHUP 1 终端挂起或控制进程终止。当用户退出Shell时,由该进程启动的所有进程都会收到这个信号,默认动作为终止进程。
SIGINT 2 键盘中断。当用户按下组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动作为终止进程。
SIGQUIT 3 键盘退出键被按下。当用户按下或组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动作为退出程序。
SIGFPE 8 发生致命的运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误。默认动作为终止进程并产生core文件。
SIGKILL 9 无条件终止进程。进程接收到该信号会立即终止,不进行清理和暂存工作。该信号不能被忽略、处理和阻塞,它向系统管理员提供了可以杀死任何进程的方法。
SIGALRM 14 定时器超时,默认动作为终止进程。
SIGTERM 15 程序结束信号,可以由 kill 命令产生。与SIGKILL不同的是,SIGTERM 信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。
$ kill -l 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR111) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+338) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+843) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+1348) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-1253) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-758) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-263) SIGRTMAX-1    64) SIGRTMAX
 

转载于:https://www.cnblogs.com/fatt/p/5124157.html

你可能感兴趣的文章
坚持做创业护卫队的770天
查看>>
《ANSYS Workbench 14有限元分析自学手册》——导读
查看>>
6个你必须用到AJAX的地方与6个不必用到的地方
查看>>
OpenExpressApp 框架结构(2)
查看>>
read和变量设定方式
查看>>
g++编译过程和动态链接库
查看>>
IPSec实验的一些体会
查看>>
c中static作用
查看>>
给初学者的RxJava2.0教程(三)(转)
查看>>
探究ConcurrentHashMap中键值对在Segment[]的下标如何确定
查看>>
Docker学习记录3: 搭建 Private Registry
查看>>
计算机图形学 补 光线跟踪
查看>>
spring整合logback配置文件
查看>>
captive portal
查看>>
mysql基本数据类型(mysql学习笔记三)
查看>>
Laravel踩坑笔记——illuminate/html被抛弃
查看>>
飞秋命令行
查看>>
做题时一时没想起来的问题总结
查看>>
[转]python-元类
查看>>
复习日记-Listener/filter/servlet3.0/动态代理
查看>>