Files
ppgo_job/agent/server/signal.go
2019-07-03 22:31:27 +08:00

42 lines
1.0 KiB
Go

/************************************************************
** @Description: server
** @Author: george hao
** @Date: 2018-11-29 11:24
** @Last Modified by: george hao
** @Last Modified time: 2018-11-29 11:24
*************************************************************/
package server
import (
"os"
"os/signal"
"syscall"
)
//监听关闭状态
func ListenSignal() {
//创建监听退出chan
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, syscall.SIGUSR1, syscall.SIGUSR2:
NLog("NOTICE", " Ready to quit close type ", s)
//TODO 异常警报,汇报状态
if err := Close(); err != nil {
NLog("ERROR", err.Error())
} else {
NLog("NOTICE", " 执行器安全关闭...")
}
os.Exit(0)
default:
NLog("NOTICE", " close type ", s)
os.Exit(1)
}
}
}()
}