Unicorn没有用USR2重装

Mig*_*ing 7 ruby-on-rails unicorn ruby-on-rails-3

我正在尝试使用USR2信号重新加载独角兽,但我在日志中收到以下错误:

E, [2012-04-13T21:27:00.801192 #24474] ERROR -- : old PID:23820 running with existing pid=/home/user/app.git/tmp/unicorn.pid.oldbin, refusing rexec
Run Code Online (Sandbox Code Playgroud)

我已经搜索了互联网,但没有线索.似乎独角兽试图写入pid文件?我发了一个kill -s USR2 PID

谢谢

Dan*_*son 8

我今天碰到了这个.我假设您之前已经将USR2发送给独角兽,现在这是您第二次尝试这样做.

根据关于信号和USR2 的独角兽文档:"一旦孩子被证实启动并运行,应该将单独的QUIT发送到原始过程."

在这种特殊情况下,你将旧的PID传递给kill

kill -s QUIT 23820
Run Code Online (Sandbox Code Playgroud)

或者,您可以利用这个旧PID存储一个已知文件(在您的错误消息中引用)和"当前"PID的事实,并执行:

kill -s QUIT `cat /home/user/app.git/tmp/unicorn.pid.oldbin`
Run Code Online (Sandbox Code Playgroud)