supervisor+shell脚本管理进程(redis demo)

效果

​ 使用shell脚本封装supervisor 支持start stop status restart。能够使用 control redis start|stop|status|restart 管理redis进程 并且在redis意外退出时重启(用kill命令模拟)
​ 其中redis可被替换为其他二进制非守护程序
​ 只是demo级的配置 具体可参考官网 http://supervisord.org/configuration.html

文件目录

​ supervisor的配置文件不使用默认的/etc/supervisor.conf为路径,这里使用自定义的目录

+ appconf           # 进程自身的配置文件
  |- redis.conf     # redis的配置文件
+ conf              # 针对每个进程的配置文件放在该目录下
  |- redis.ini      # supervisor 管理redis的配置文件
+ logs              # 存放日志文件
+ run               # 存放如pid sock等文件
|- control          # 管理脚本
|- supervisord.conf # supervisord 全局配置文件
全局配置 supervisord.conf
; %(here)s 占位符表示配置文件所在目录
[unix_http_server]
file=%(here)s/run/supervisor.sock ;unix域socket文件 supervisorctl通过该文件与supervisord通信

[supervisord]
pidfile=%(here)s/run/supervisor.pid   ;supervisord的pid文件路径
logfile=%(here)s/logs/supervisord.log ;supervisord的日志路径
loglevel=warn                         ;日志等级

;supervisord和supervisorctl通信必须设置 通常使用以下默认设置
;应该是设置客户端和服务端通信时xml-rpc使用的接口?对这个配置理解不是很透彻
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
;supervisorctl访问的URL 由于是单机使用 故[unix_http_server]一致 这里是unix域socket
;设置为其他机器的ip:port 便可控制其他机器的进程
serverurl=unix://%(here)s/run/supervisor.sock 

;包含其他配置文件
[include]
files=conf/*.ini ;这里使用正则表达式
supervisor 管理redis的配置 redis.ini
[program:redis]
;%(program_name)s 即 program:后面部分 如这里是redis
command=redis-server %(here)s/appconf/redis.conf ;启动进程的命令 注意这里的%(here)s不是redis.ini自己所在的目录
autorestart=true ;意外退出时自动重启
stdout_logfile=%(here)s/logs/%(program_name)s.log ;设置日志
shell脚本control
全局变量定义
#!/bin/bash

program=$1  # 要启动的进程名
action=$2   # 要执行的动作

# 简单的输入检查

script_path=$(cd $(dirname $0);PWD -P)       # control所在目录
run_path="${script_path}/run/"			     # run目录
pid_file="${run_path}/supervisor.pid"        # pid文件路径
sock_file="${run_path}/supervisor.sock"      # sock文件路径
conf_file="${script_path}/supervisord.conf"  # supervisord配置文件
start函数
function start()
{
   
	# 如果pid文件存在 则supervisor
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值