2012-07-12 56 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