diff --git a/cmd/server.go b/cmd/server.go index e210678..042b3bf 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -8,10 +8,9 @@ import ( "github.com/taoshihan1991/imaptool/middleware" "github.com/taoshihan1991/imaptool/router" "github.com/taoshihan1991/imaptool/tools" + "github.com/zh-five/xdaemon" "log" "os" - "os/exec" - "path/filepath" ) var ( @@ -33,17 +32,30 @@ func init() { } func run() { if daemon == true { - if os.Getppid() != 1 { - // 将命令行参数中执行文件路径转换成可用路径 - filePath, _ := filepath.Abs(os.Args[0]) - cmd := exec.Command(filePath, os.Args[1:]...) - // 将其他命令传入生成出的进程 - cmd.Stdin = os.Stdin // 给新进程设置文件描述符,可以重定向到文件中 - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - cmd.Start() // 开始执行新进程,不等待新进程退出 - os.Exit(0) + logFilePath := "" + if dir, err := os.Getwd(); err == nil { + logFilePath = dir + "/logs/" } + _, err := os.Stat(logFilePath) + if os.IsNotExist(err) { + if err := os.MkdirAll(logFilePath, 0777); err != nil { + log.Println(err.Error()) + } + } + d := xdaemon.NewDaemon(logFilePath + "go-fly.log") + d.MaxCount = 5 + d.Run() + //if os.Getppid() != 1 { + // // 将命令行参数中执行文件路径转换成可用路径 + // filePath, _ := filepath.Abs(os.Args[0]) + // cmd := exec.Command(filePath, os.Args[1:]...) + // // 将其他命令传入生成出的进程 + // cmd.Stdin = os.Stdin // 给新进程设置文件描述符,可以重定向到文件中 + // cmd.Stdout = os.Stdout + // cmd.Stderr = os.Stderr + // cmd.Start() // 开始执行新进程,不等待新进程退出 + // os.Exit(0) + //} } baseServer := "0.0.0.0:" + Port diff --git a/go.mod b/go.mod index c389d7f..28c4ffd 100644 --- a/go.mod +++ b/go.mod @@ -26,6 +26,7 @@ require ( github.com/spf13/cobra v0.0.5 github.com/swaggo/gin-swagger v1.2.0 github.com/swaggo/swag v1.5.1 + github.com/zh-five/xdaemon v0.1.1 golang.org/x/net v0.0.0-20200513185701-a91f0712d120 golang.org/x/text v0.3.2 ) diff --git a/go.sum b/go.sum index 9e228eb..79b0252 100644 --- a/go.sum +++ b/go.sum @@ -213,6 +213,8 @@ github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/zh-five/xdaemon v0.1.1 h1:W5VyJ+5ROjjcb9vNcF/SgWPwTzIRYIsW2yZBAomqMW8= +github.com/zh-five/xdaemon v0.1.1/go.mod h1:i3cluMVOPp/UcX2KDU2qzRv25f8u4y14tHzBPQhD8lI= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=