如何定义不同的停止/重新启动信号

我开始将我们所有的系统转换成使用新贵来pipe理我们的各种应用程序。 我总是缺less的一件事就是能够在stoprestart事件时向进程发送不同的信号。

比如,我们用Unicorn运行我们的web进程。 独angular兽有一个很好的信号处理API。 当我想优雅地重新加载进程时,我发送一个USR2信号的主要PID。 为了优雅地closures它们,我发送一个QUIT命令。 TERM(upstart的默认停止信号)构成立即closures。

另一个例子是使用Resque 。 为了优雅地closures工人,我发送了QUIT信号。 TERM信号再次导致立即closures,无论工人的孩子是否分叉。

新贵支持自定义信号吗? 我似乎无法在任何地方find它,这使我担心我正在使用“错误的工具”。

Ubuntu 10.04自带0.6.8版本,它有kill signalkill timeout参数,可以configuration相关的信号和超时值。 “重新加载”信号被硬编码为SIGHUP

更新版本的upstart引入了reload signal参数 – 请参阅此问题的其他答案以获取更多详细信息。

从新贵v1.10.0开始,你可以定义一个“重载信号”。

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

这个版本在v10.10之前的ubuntu上可用…我使用这些指令来升级我的ec2实例:

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

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

 reload signal SIGUSR2