我第一次用systemd部署unicorn(实际上,这是我第一次使用systemd),并且我正在使用unicorn的“零停机升级”绝招,或者基本上:
- 发送
USR2
到主进程 - 这会导致产生新的 master 和workers,旧的 pidfile 被重命名,新的 pidfile 反映新 master 的 PID
- 向旧master发送QUIT
- 这会导致旧的worker处理当前的请求并退出,并且旧的master死亡
这一切都工作得很好,除了一件事:systemd 的日志捕获 (for systemctl status
) 看不到新进程的输出。我猜这是因为它没有参与切换过程或其他什么?
系统是查看新主机的 PID 并正确跟踪它。
如果我preload_app = false
在 unicorn 的配置中设置并仅 HUP master(这不会更改 master 的 PID),则一切都很好 - 但这并不能解决我实际上想要升级 unicorn 的情况。
如果重要的话,我没有独角兽守护进程,并且Type=simple
在我的单元配置文件中。
有什么方法可以让 systemd 将自身附加到新 master 的日志输出吗?