阻止Unicorn Server进程运行的最佳方法是什么?

时间:2011-01-20 16:45:35

标签: ruby-on-rails

阻止Unicorn Server进程运行的最佳方法是什么?每当我尝试使用kill -p 90234停止它时,它都不起作用。这很可能是我做错了。

感谢。

10 个答案:

答案 0 :(得分:75)

查看Unicorn SIGNALS page。如果主机运行正常并且您只想将其关闭,则应发送QUIT信号:

kill -QUIT 1234     # where 1234 is the real process id, of course

优雅地阻止所有工人,让他们完成任何他们正在服务的请求。

答案 1 :(得分:41)

我用这个:

ps aux | grep 'unicorn' | awk '{print $2}' | xargs sudo kill -9

两个月后我才回头看看这个。这很疯狂,如果你有一个以上的独角兽大师并且你只想杀死其中一个,就不要使用它。

答案 2 :(得分:18)

有意思的是,没人考虑过独角兽创建的pid文件?我通常的配置把它放在./tmp/unicorn.pid中,所以也许最安全的方法是

kill -QUIT `cat tmp/unicorn.pid`

然后,离开的进程正确删除了pid文件。我总是将pid文件放在相同的相对位置,所以我想我可以为了方便而使用别名,尽管我在开发时通常不会对unicorn进行守护。

答案 3 :(得分:11)

我可能会选择:

sudo pkill unicorn_rails

答案 4 :(得分:4)

ps aux | grep unicorn
#=> root   4393  2.0  0.9  65448 20764 ?  S  20:06   0:35 unicorn_rails m
kill 4393

答案 5 :(得分:3)

最终,关键是以下一行针对主麒麟流程并将其杀死

kill $(ps aux | grep '[u]nicorn_rails master' | awk '{print $2}')

答案 6 :(得分:2)

通常我很懒,我只是按姓名杀人:

$ killall processname

答案 7 :(得分:1)

简单的东西 - 在终端类型“ps”中,并查看Master Unicorn Process。复制它的PID然后键入“kill -9 90234”(其中90234是主独角兽进程的PID)。之后,工人流程应该自行消失。

答案 8 :(得分:0)

对于那些使用厨师并且看不到上述任何内容的人(因为一旦你杀了他们就重新生成了这些进程):

sudo sv stop APP_NAME

svrunit的控件。

答案 9 :(得分:0)

要退出特定的Unicorn服务器,您可以使用以下内容:

pkill -QUIT --pidfile /path/to/app/shared/tmp/pids/unicorn.pid

通过这种方式,您可以选择性地终止任何进程,而不必使用可能无法使用的shell评估/扩展。