11

对于启动应用程序,我使用 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

如果我在运行工头的控制台中按 control+C,工头会结束,但运行的进程不会被杀死。是否可以杀死工头杀死时工头运行的进程。

4

3 回答 3

10

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

lsof -i :4567

这会给你进程的 pid,比如 34564,然后用

kill -9 34564

如果您在 Windows 上,请安装cygwin以获取lsofkill命令。

于 2012-02-03T03:59:07.237 回答
1

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

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

于 2012-02-02T11:10:13.357 回答
0

我已经组装了一个小单线,它可以找到进程 ID 并终止进程

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

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

于 2012-12-20T17:17:06.697 回答