我开始将所有系统转换为使用upstart来管理我们的各种应用程序进程.我经常遗漏的一件事是能够在停止或重启事件时向进程发送不同的信号.
例如,我们使用Unicorn运行我们的Web进程.Unicorn有一个很棒的信号处理API.当我想优雅地重新加载进程时,我向主pid发送一个USR2信号.为了优雅地关闭它们,我发送了一个QUIT命令. TERM(upstart的默认停止信号)构成立即关闭.
另一个例子是使用Resque.为了优雅地关闭工人,我发送了QUIT信号.无论工人的孩子是否分叉,TERM信号再次导致立即关闭.
Ubuntu 10.04附带upstart版本0.6.6,它具有
kill signal
and kill timeout
参数,可配置相关的信号和超时值. “重载”信号被硬编码为SIGHUP.
较新版本的新贵介绍reload signal
parameter – 请参阅此问题的其他答案以获取更多详细信息.