From 0613a9e6306026713501d90b9d02fb7ffbebf054 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期二, 31 十二月 2019 13:30:58 +0800 Subject: [PATCH] add restart --- main.go | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/main.go b/main.go index 156b723..b71a68f 100644 --- a/main.go +++ b/main.go @@ -4,12 +4,16 @@ "analysis/logo" "analysis/proc" "analysis/util" + "fmt" + "runtime/debug" "strconv" + "time" "context" "flag" "os" + "os/exec" "os/signal" "golang.org/x/sys/unix" @@ -147,6 +151,8 @@ if role == single { ret = proc.SingleRole(ctx, runType, id, gpu, shm) } else if role == master { + defer dump(util.LogFile + "_dump_" + time.Now().Format("20060102150405")) + setParamters() ret = proc.MasterRole(ctx) } else if role == slave { @@ -164,3 +170,26 @@ gosdk.Free() logo.Close() } + +func dump(dumpFile string) { + dumpErr := recover() + if dumpErr == nil { + return + } + f, err := os.Create(dumpFile) + if err != nil { + return + } + f.WriteString(fmt.Sprintf("panic:\r\n%v", dumpErr)) + f.WriteString("\r\n\nstack:\r\n") + f.WriteString(string(debug.Stack())) + f.Close() + + ////////////////////////////////////////////// + // restart master + + cmd := exec.Command(os.Args[0], os.Args[1:]...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + cmd.Start() +} -- Gitblit v1.8.0