如何使用 upstart 定义不同的停止/重启信号

如何使用 upstart 定义不同的停止/重启信号

我开始将所有系统转换为使用 upstart 来管理各种应用程序流程。我一直缺少的一件事是向进程stoprestart事件发送不同信号的能力。

例如,我们使用以下方式运行 Web 进程独角兽。Unicorn 有一个很棒的信号处理 API。当我想正常地重新加载进程时,我会向主进程发送 USR2 信号。要正常关闭它们,我会发送 QUIT 命令。TERM(upstart 的默认停止信号)表示立即关闭。

另一个示例是使用救援。为了正常关闭一个 worker,我向它发送 QUIT 信号。TERM 信号再次导致立即关闭,无论该 worker 的子进程是否被分叉。

upstart 是否支持自定义信号?我似乎在任何地方都找不到它,这让我担心我使用了“错误的工具”。

答案1

Ubuntu 10.04 附带 upstart 版本 0.6.6,它具有kill signalkill timeout参数将配置相关的信号和超时值。“重新加载”信号被硬编码为SIGHUP

较新版本upstart引入了reload signal范围- 请参阅该问题的其他答案以了解更多详细信息。

答案2

从 upstart v1.10.0 开始,您可以定义“重新加载信号”。

https://launchpad.net/upstart/1.x/1.10.0

从 v13.10 开始,此版本可在 ubuntu 上使用...我使用以下说明升级我的 ec2 实例:

https://askubuntu.com/questions/302762/upgrading-13-04-to-13-10

我使用 rails+puma 并在我的 /etc/init/app-1.conf 文件中使用此指令进行正常重新加载:

reload signal SIGUSR2

相关内容