2012-07-12 50 views
1

如何重新启动grails应用程序,而不是通过执行ctrl z并将其重新运行来关闭它。如何重新启动grails web应用程序

,当我这样做的,它说

Error Server failed to start for port 8080: Address already in use 
+0

听起来像是你不等待足够长的服务器关机 - 也有可能是一些凝固酶原sses在关机时触发(捕捉SIGHUP),并且您需要等待它们完成后才能重新运行run-app命令。 – nickdos 2012-07-12 04:44:33

+0

@nickdos我给了一些时间,它仍然做同样的事情。有没有一种方法可以手动关闭内置于grails的jetty web服务器? – 2012-07-12 04:51:31

+1

根据您的平台,您应该能够找到码头的活动流程,并以高杀伤率杀死该流程。例如。对于Mac OS X和Linux,它会'kill -9 ',其中是进程号。不记得如何在Windows上做到这一点,抱歉。 – nickdos 2012-07-12 04:56:58

回答

7

CTRL - ž不关闭应用程序,发送SIGTSTP signal to the process暂停它...挂起的进程仍然有连接它们的资源(端口,文件等),所以你不能在一个挂起的时候在同一个端口上运行另一个grails实例。

要使其重新to the foreground,你可以在同一个shell中输入fg(或者,如果你想让它run in the background,您可以使用bg

要关闭它,你需要CTRL - Ç (或者你可以杀死它作为nickdos在评论中说的)

+0

是的,这是做到了。再次感谢@tim_yates:d – 2012-07-13 06:24:37

+0

按Ctrl + C,如果是挂并不总是奏效。请在下面查看@IanRoberts的答案。 – Spider 2012-12-05 08:47:08

+0

.kill-运行的应用程序,并杀死并不总是每次工作。看到我的另一篇文章kill -9 12345真的粉碎它。 – Spider 2013-02-21 20:51:44

5

要干净地关闭run-apprun-war,创建Grails应用程序(即沿着012顶级目录中名为.kill-run-app一个空文件,src等)。一旦应用程序停止,Grails会自动删除这个文件,所以当它创建后不久就会消失。

+0

FANTASTIC !!!!!! – Spider 2012-12-05 08:46:17

+0

似乎并没有在工作的Grails 3.请参阅[这个答案,而不是(http://stackoverflow.com/a/22673925/539048) – GreenGiant 2016-05-09 17:02:24

2

如果仍然不工作:

lsof -i :8080ps aux | grep grails

显示进程ID,然后首先尝试很好地杀死它:

kill 12345(其中12345是的ProcessID)

如果它真的不想玩得很好,那么HAMMER它与:

kill -9 12345(其中12345是的ProcessID)

屡试不爽(免责声明:可能毁掉一切)

+0

我会记住这件事锤击心中。 :D – 2013-02-23 03:25:24

2

关机状态,无需处理黑客和不需要“可能毁掉一切”声明:)

只要运行:

grails stop-app

+0

在Grails中工作3 – GreenGiant 2016-05-09 17:03:02