如何创建一个初始化脚本,在旧进程在重新启动时完全终止之前启动(并跟踪)新进程?
我正在开发一个需要能够正常重启的 node.js 服务,例如在部署新版本时。问题是该服务有一些长时间运行的任务需要完成,然后服务进程才能完全关闭,但新进程应该立即启动。
通常,在开发服务时,我会创建一个简单的 upstart-init-script,以非特权用户身份启动服务,以相同的非特权用户身份运行部署,并在部署脚本结束时发送 SIGINT 以关闭服务。然后 Upstart 会检测到服务已终止并从新部署的代码重新启动。
但这次,服务在收到 SIGINT 后可能需要长达一个小时的时间才能关闭,因此我需要并行运行多个进程,而我认为 upstart 不是为此设计的。
我想我可以跳过 upstart 并在部署脚本中启动新进程并将其分离,但这意味着我将失去 upstart 提供的自动启动/重启/启动/停止功能,所以我宁愿不这样做。