阻止Unicorn Server进程运行的最佳方法是什么?每当我尝试使用kill -p 90234
停止它时,它都不起作用。这很可能是我做错了。
感谢。
答案 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
sv
是runit
的控件。
答案 9 :(得分:0)
要退出特定的Unicorn服务器,您可以使用以下内容:
pkill -QUIT --pidfile /path/to/app/shared/tmp/pids/unicorn.pid
通过这种方式,您可以选择性地终止任何进程,而不必使用可能无法使用的shell评估/扩展。