我是 Go 新手,我正在运行一些小服务。当我部署一个新版本时,我通常只是上传新的二进制文件、kill现有的进程并开始一个新的进程。我想知道这是否是正确的做法,或者是否有更好的方法来做到这一点。
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
杀死进程,替换和重新启动没有任何问题。如果您想在退出时进行一些清理,您可以执行以下操作:
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)
}()
}
如果您确实 kill {pid} (没有 -9 开关),进程将gracefullShutdown在终止之前调用函数。
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消