package main import ( "log" "os" "os/signal" "syscall" "time" ) var ( Signals = []os.Signal{syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT} ) func Shutdown() { ch := make(chan os.Signal, 0) signal.Notify(ch, Signals...) s := <-ch if s != nil { log.Printf("Received signal '%s'.", s) con.Quit() log.Print("Terminating in 5 seconds.") time.Sleep(time.Second * 5) log.Printf("Terminating because of signal '%s'", s) os.Exit(0) } }