github.com/zly-app/zapp@v1.3.3/deamon.go (about)

     1  /*
     2  -------------------------------------------------
     3     Author :       zlyuancn
     4     date:         2021/2/19
     5     Description :
     6  -------------------------------------------------
     7  */
     8  
     9  package zapp
    10  
    11  import (
    12  	"flag"
    13  	"os"
    14  
    15  	"github.com/takama/daemon"
    16  	"go.uber.org/zap"
    17  
    18  	"github.com/zly-app/zapp/logger"
    19  )
    20  
    21  func (app *appCli) enableDaemon() {
    22  	if !app.opt.EnableDaemon || len(os.Args) < 2 {
    23  		return
    24  	}
    25  
    26  	flag.String("install", "", "安装服务, string 是运行时传递给 app 的参数, 请不要使用相对路径")
    27  	flag.Bool("remove", false, "移除服务")
    28  	flag.Bool("start", false, "启动服务")
    29  	flag.Bool("stop", false, "停止服务")
    30  	flag.Bool("status", false, "查看运行状态")
    31  
    32  	switch os.Args[1] {
    33  	case "install":
    34  	case "remove":
    35  	case "start":
    36  	case "stop":
    37  	case "status":
    38  	default:
    39  		return
    40  	}
    41  
    42  	d, err := daemon.New(app.name, app.name, daemon.SystemDaemon)
    43  	if err != nil {
    44  		logger.Log.Fatal("守护进程模块创建失败", zap.Error(err))
    45  	}
    46  
    47  	var out string
    48  	switch os.Args[1] {
    49  	case "install":
    50  		out, err = d.Install(os.Args[2:]...)
    51  	case "remove":
    52  		out, err = d.Remove()
    53  	case "start":
    54  		out, err = d.Start()
    55  	case "stop":
    56  		out, err = d.Stop()
    57  	case "status":
    58  		out, err = d.Status()
    59  	}
    60  
    61  	if err != nil {
    62  		logger.Log.Error(out, zap.Error(err))
    63  		os.Exit(1)
    64  	}
    65  
    66  	logger.Log.Info(out)
    67  	os.Exit(0)
    68  }