69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/boot"
|
|
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/config"
|
|
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/internal/command"
|
|
_ "git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/internal/nats_service"
|
|
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/internal/routers"
|
|
_ "git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/internal/service/heartbeat_service"
|
|
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/pkg/log"
|
|
"git.inspur.com/sbg-jszt/cfn/cfn-schedule-agent/pkg/utils"
|
|
"os"
|
|
"os/signal"
|
|
"strings"
|
|
"syscall"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
run()
|
|
}
|
|
|
|
func run() {
|
|
script := strings.Split(boot.Run, ":")
|
|
switch script[0] {
|
|
case "http":
|
|
|
|
go func() {
|
|
r := routers.SetRouters()
|
|
err := r.Run(fmt.Sprintf("%s:%d", config.Config.Server.Host, config.Config.Server.Port))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}()
|
|
|
|
// wait for signals
|
|
chSysSig := make(chan os.Signal, 1)
|
|
signal.Notify(chSysSig, syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
select {
|
|
case <-chSysSig:
|
|
// 用户发送INTR字符(Ctrl+C)触发
|
|
log.Infof("用户发送INTR字符(Ctrl+C)触发中止逻辑")
|
|
|
|
break
|
|
case <-utils.ChUserSig:
|
|
// 通过接口
|
|
log.Infof("用户通过中止服务接口触发中止逻辑")
|
|
break
|
|
}
|
|
//sig := <-chSysSig
|
|
utils.StopCh <- os.Interrupt
|
|
|
|
// delay 3 seconds
|
|
log.Infof("优雅关闭中.....")
|
|
time.Sleep(time.Second * 5)
|
|
log.Infof("已完成关闭!")
|
|
|
|
case "command":
|
|
if len(script) != 2 {
|
|
panic("命令错误,缺少重要参数")
|
|
}
|
|
command.Run(script[1])
|
|
default:
|
|
panic("执行脚本错误")
|
|
}
|
|
}
|