package main import ( "fmt" _ "github.com/gogf/gf/contrib/drivers/mysql/v2" "github.com/gogf/gf/v2/os/gctx" _ "nodeMonitor/internal/logic" _ "nodeMonitor/internal/packed" "nodeMonitor/internal/task/cmd" "os" "os/signal" "syscall" "time" ) func main() { cmd.TaskMain.Run(gctx.New()) Exit() } func Exit() { c := make(chan os.Signal) //监听指定信号 ctrl+c kill signal.Notify(c, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGUSR1, syscall.SIGUSR2) go func() { for s := range c { switch s { case syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT: fmt.Println("退出", s) ExitFunc() case syscall.SIGUSR1: fmt.Println("usr1", s) case syscall.SIGUSR2: fmt.Println("usr2", s) default: fmt.Println("other", s) } } }() fmt.Println("进程启动...") for { time.Sleep(time.Second) } } func ExitFunc() { fmt.Println("开始退出...") fmt.Println("执行清理...") fmt.Println("结束退出...") os.Exit(0) }