Upstart或systemd启动服务,我希望热更新它。更新后,新服务进程正在运行,然后终止由upstart或systemd启动的旧服务进程。最后,新流程可以由upstart或systemd监控为旧流程。
答案 0 :(得分:0)
您没有说出您的服务是做什么的。我正在回答这个简单的案例,一个具有短期连接的网络服务,例如HTTP服务器。
systemctl restart <myservice>
在实践中,您的服务中通常还会有一些状态需要在关机时保持,并在启动时加载。
服务关闭可能需要等待一段时间,直到所有请求完成。
对于使用许多长期TCP连接(例如XMPP服务器)的更困难的情况,它不再是关于systemd的,你必须让你的新旧进程协调以传递套接字来自一个到另一个。我在Online upgrades in Go中对其进行了描述,但它还有很多工作要做。