golang 版supervisor,支持win,linux,mac,使用说明

Repo

https://github.com/ochinchina/supervisord

安装方式

go build 得到supervisord.exe,放入GOPATH/bin/或者PATH
supervisord version 验证是否正确安置

备注

本文不对具体参数说明,亦不对每一个功能细致讲解,仅仅对生产中使用supervisord的所经步骤进行描述。
本实例举的是windows下
有python版supervisor使用经验的体验更佳。

准备程序

假定需要守护的是这个进程,所在目录:
G:\go_workspace\GOPATH\src\test_X\test_supervisord

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/", func(context *gin.Context) {
		context.String(200, "ok")
	})
	r.Run(":7111")
}

go build -o main.exe

准备结束
G:\go_workspace\GOPATH\src\test_X\test_supervisord 下存在了main.gomain.exe

启动supervisord

先准备配置文件。
创建文件夹与对应文件
E:\etc\supervisord.conf,内容

[inet_http_server]
port=127.0.0.1:9001

[include]
files = E:\\etc\\supervisord.d\\*.ini

E:\etc\supervisord.d\,内容

[program:test_supervisord]
directory=G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord
command=G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord\\main 2>/home/web/projects/xyx_srv/gc.log
# command=go run G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord\\main.go 2>/home/web/projects/xyx_srv/gc.log
stdout_logfile=G:\\go_workspace\\GOPATH\\src\\test_X\\test_supervisord\\stdout.log
stdout_logfile_backups=50
redirect_stderr=true
autostart=true
autorestart=true

以上参数复制粘贴即可,必要说明:
directory: 需要守护的程序所在的目录,也就是main.exe所在目录
command: 具体执行的命令,如上所示,既可以直接执行main.exe,又可以 go run /…/…/…/…/main.go
stdout_logfile: 控制台信息打印于该文件,可不存在,会创建自动
autostart: 自动启动
autorestart: 自动重启

开始

cmd
supervisord -c E:\etc\supervisord.conf -d

在浏览器输入 localhost:7111 得到ok

cmd
netstat -ano|findstr 7111 查看7111所在pid
taskkill/pid 14616 -t -f 假设7111对应pid14616,则杀死14616

杀死以后,查看supervisor窗口,发现已经自动重启,在浏览器输入 localhost:7111 得到ok

你可能感兴趣的:(go)