Unicorn没有用USR2重装

时间:2012-04-13 21:32:56

标签: ruby-on-rails ruby-on-rails-3 unicorn

我正在尝试使用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

我搜索互联网但没有线索。似乎独角兽试图写入pid文件?我正在发出kill -s USR2 PID

由于

1 个答案:

答案 0 :(得分:8)

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

根据unicorn documentation on signals和USR2:“一旦确认孩子已启动并正在运行,应将单独的QUIT发送到原始流程。”

在这种特殊情况下,你会传递旧的PID来杀死

kill -s QUIT 23820

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

kill -s QUIT `cat /home/user/app.git/tmp/unicorn.pid.oldbin`