https://github.com/ochinchina/supervisord
http://supervisord.org/configuration.html
go generate
GOOS=linux go build -tags release -a -ldflags "-linkmode external -extldflags -static" -o supervisord
systemctl enable supervisord # supervisord -c /etc/supervisord.conf -d
# supervisor.conf
# 查找路径:
# $CWD/supervisord.conf; $CWD/etc/supervisord.conf
# /etc/supervisord.conf; /etc/supervisor/supervisord.conf
# ../etc/supervisord.conf; ../supervisord.conf
# http服务,提供web管理界面
[inet_http_server]
port=0.0.0.0:9001
username=user
password=123
[supervisord]
logfile=/tmp/supervisord.log
logfile_maxbytes=50MB # 0表示不限制大小
logfile_backups=8 # 日志备份数量,0表不备份
loglevel=info
nodaemon=false
[supervisorctl]
serverurl=http://127.0.0.1:9001 # 通过http方式连接supervisord
[include]
files=*.ini # 包含其他配置文件,如下方的程序xx
[program-default] # 公共参数
environment=ENV="/xx",VAR2=""
[program:xx] # 被管理的一个进程
command=/opt/tomcat.sh run
directory=/opt
autostart=true # supervisord启动时也自动启动
autorestart=true # 程序退出后自动重启; unexpected:进程被意外杀死后才重启
startretries=3 # 启动失败自动重试次数,默认3
startsecs=8 # 启动8s后没有异常退出旧表示正常启动,默认1s
user=tomcat # 以哪个用户启动进程
priority=9 # 进程启动的优先级,值小的优先启动
redirect_stderr=true # 把stderr重定向到stdout,默认false
stdout_logfile=/opt/tomcat.log, /dev/stdout, syslog # 也可指定stderr_logfile; 此处指定多个输出
stdout_logfile_maxbytes=20MB # 默认50MB
stdout_logfile_backups=8
stopasgroup=false # 进程被杀死时是否向这个进程组发送stop信号,默认false
killasgroup=false # 向进程发送kill信号时包括子进程,默认false
restartpause=2s # stop后再次start这之间的间隔
restart_when_binary_changed=true # 默认false
supervisorctl status # 查看所有进程的状态
supervisorctl stop es
supervisorctl start es
supervisorctl restart es