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

loc*_*red 8 upstart ubuntu-10.04 unicorn

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

例如,我们使用Unicorn运行我们的 Web 进程。Unicorn 有一个很棒的信号处理 API。当我想优雅地重新加载进程时,我向主 pid 发送一个 USR2 信号。为了优雅地关闭它们,我发送了一个 QUIT 命令。TERM(新贵的默认停止信号)构成立即关闭。

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

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

小智 6

从 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
Run Code Online (Sandbox Code Playgroud)


the*_*bit 4

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

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