From 67fe37e664e5104513ff3aa9f49c826d8ad6d162 Mon Sep 17 00:00:00 2001 From: wangyj Date: Wed, 17 Jan 2018 18:00:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=20=EF=BC=8C=E6=8B=86?= =?UTF-8?q?=E5=88=86=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmds.go | 3 +++ fsm.go | 3 +++ gosuv.go | 2 +- web.go | 3 +-- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cmds.go b/cmds.go index 83c3d1f..71d1801 100644 --- a/cmds.go +++ b/cmds.go @@ -77,6 +77,9 @@ func actionStartServer(c *cli.Context) error { if err != nil { log.Fatal(err) } + if err := ioutil.WriteFile("/var/run/gosuv.pid", []byte(strconv.Itoa(cmd.Process.Pid)), 0644); err != nil { + log.Fatalln(err) + } select { case err = <-GoFunc(cmd.Wait): log.Fatalf("server started failed, %v", err) diff --git a/fsm.go b/fsm.go index fe70dc2..2346e8d 100644 --- a/fsm.go +++ b/fsm.go @@ -292,6 +292,7 @@ func (p *Process) waitNextRetry() { if p.retryLeft <= 0 { p.retryLeft = p.StartRetries p.SetState(Fatal) + p.cmd = nil return } p.retryLeft -= 1 @@ -353,6 +354,7 @@ func (p *Process) startCommand() { if err := p.cmd.Start(); err != nil { log.Warnf("program %s start failed: %v", p.Name, err) p.SetState(Fatal) + p.cmd = nil return } // 如果是running状态,重置 retryLeft @@ -368,6 +370,7 @@ func (p *Process) startCommand() { if time.Since(startTime) < time.Duration(p.StartSeconds)*time.Second { if p.retryLeft == p.StartRetries { // If first time quit so fast, just set to fatal p.SetState(Fatal) + p.cmd = nil p.RunNotification(Fatal) log.Printf("program(%s) exit too quick, status -> fatal", p.Name) return diff --git a/gosuv.go b/gosuv.go index cd3a966..04fbc5e 100644 --- a/gosuv.go +++ b/gosuv.go @@ -116,7 +116,7 @@ func checkServerStatus() error { } func main() { - var defaultConfigPath = filepath.Join(defaultGosuvDir, "config.yml") + var defaultConfigPath = filepath.Join(defaultGosuvDir, "conf/config.yml") app := cli.NewApp() app.Name = "gosuv" diff --git a/web.go b/web.go index 7426f3f..d178e81 100644 --- a/web.go +++ b/web.go @@ -599,7 +599,6 @@ func (s *Supervisor) wsPerf(w http.ResponseWriter, r *http.Request) { if err != nil { break } - mainPinfo, err := ps.ProcInfo() if err != nil { break @@ -650,7 +649,7 @@ func (s *Supervisor) AutoStartPrograms() { func newSupervisorHandler() (suv *Supervisor, hdlr http.Handler, err error) { suv = &Supervisor{ - ConfigDir: defaultGosuvDir, + ConfigDir: filepath.Join(defaultGosuvDir, "conf"), pgMap: make(map[string]Program, 0), procMap: make(map[string]*Process, 0), eventB: NewWriteBroadcaster(4 * 1024),