Foreman不会杀死进程

时间:2011-11-12 15:15:04

标签: ruby-on-rails ruby foreman

对于开始应用,我使用Foreman。 Foreman从Procfile开始进程

web: bundle exec rails server thin -p $PORT
worker: bundle exec rake environment resque:work QUEUE=send_mail
api: bundle exec rails server thin -p $PORT

如果我在控制台中按控制+ C我操作工头,工头结束但是运行过程没有被杀死。当工头被杀时,是否有可能杀死领班跑的过程。

3 个答案:

答案 0 :(得分:8)

下面的示例假定使用的端口是4567,然后执行:

lsof -i :4567

这为你提供了流程的pid,比如34564,然后用

杀死它
kill -9 34564

如果您使用的是Windows,请安装cygwin以获取lsofkill命令。

答案 1 :(得分:1)

只要有打开的连接,Thin就不会终止。 Faye使用长轮询或WebSockets(持久连接)。 所以最终结果是Thin正在等待你的Faye连接关闭。

尝试关闭Thin安装的信号处理程序,你应该没问题。

答案 2 :(得分:0)

我已经组装了一个小的单行程序,可以找到进程ID并杀死进程

kill -9 `lsof -P -i :5000 | sed -n 's/python *\([0-9]*\).*\:5000.*/\1/p'`

在这种情况下,我在端口5000上运行python进程,但您可能正在其他端口上运行其他类型的进程,因此您需要相应地自定义此单行。