退出应用程序优雅

时间:2016-06-13 20:28:10

标签: go

我是Go的新手,我正在运行一些小型服务。

当我部署新版本时,我通常只需上传新二进制文件kill现有流程并开始新版本。

我想知道这是否正确,或者是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:4)

杀死进程,替换和重新启动没有错。如果您想在退出时进行一些清理,可以执行以下操作:

support@ubuntu-template:~$ sudo opam depext snappy.0.1.0
# Detecting depexts using flags: x86_64 linux ubuntu
# The following system packages are needed:
#  - libsnappy-dev
#  - m4
# All required OS packages found.

如果你杀了{pid}(没有-9开关),进程会在终止前调用import( "fmt" "os" "os/signal" "syscall" ) func main(){ //work here go gracefulShutdown() forever := make(chan int) <-forever } func gracefulShutdown() { s := make(chan os.Signal, 1) signal.Notify(s, os.Interrupt) signal.Notify(s, syscall.SIGTERM) go func() { <-s fmt.Println("Sutting down gracefully.") // clean up here os.Exit(0) }() } 函数。