我是Go的新手,我正在运行一些小型服务。
当我部署新版本时,我通常只需上传新二进制文件kill
现有流程并开始新版本。
我想知道这是否正确,或者是否有更好的方法来做到这一点。
答案 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)
}()
}
函数。