2011-01-20 118 views
29

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

谢谢。

+1

不能编程。也许是ServerFault.com。 – Dogbert 2011-01-20 16:47:35

+2

扔华夫饼吧? – bmargulies 2011-01-22 00:53:36

+0

在github上有一些很好的rake任务,它们包装kill调用 - https://gist.github。com/1246503/7fb148968b0195a55b488ae1572c1ded84e15795 – house9 2011-12-15 04:25:26

回答

0

简单的事情那里 - 在终端键入“ps”,并寻找麒麟大师进程。复制它的PID,然后键入“kill -9 90234”(其中90234是主独角兽进程的PID)。之后,工作流程应该自行消失。

+14

`kill -9`永远不是一个杀死正在运行的进程的安全方法。我建议Rob Cameron回答如下。 – Gewthen 2014-06-26 14:46:48

+0

已投票。像Gewthen所描述的那样,用-9杀死可能会导致很多问题。 kill -QUIT更安全得多(根据Rob Cameron的回答)。 – XtraSimplicity 2017-06-19 23:16:49

2

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

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

看一看的Unicorn SIGNALS page。如果主机正常运作,你只是想关闭它,你应该发送退出信号:

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

这正常停止所有的工作人员,让他们完成他们在服务的中间是任何请求。

39

我用这个:

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

我只是回头看了看这两个月以后。这是疯狂的,如果你有不止一个独角兽的主人,并且你只想杀死其中的一个,就不要使用它。

0

使用厨师,看到的是没有上述作品(因为过程,只要你杀了他们重生)的:

sudo sv stop APP_NAME

svrunit控制。

18

有趣的是,没有人认为独角兽创建的pid文件?我通常的配置把它放在./tmp/unicorn.pid,所以也许最安全的方式是

kill -QUIT `cat tmp/unicorn.pid` 

和PID文件,然后适当地离去的过程中被删除。我总是把pid文件放在相同的相对位置,所以我想我可以为了方便而别名,尽管当我开发时我通常不会将独角兽守护进程。

3

最后,关键是它的目标主麒麟工艺和杀死它

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

要退出特定麒麟服务器,你可以使用类似下面的下面一行:

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

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

相关问题