如何使用命令关闭grails run-app

时间:2010-08-27 15:42:48

标签: grails shutdown run-app

执行“grails run-app”后,除了使用“Ctrl + C”外,是否有关闭它的命令?

9 个答案:

答案 0 :(得分:13)

对于停止服务器:

从终端退出并使用以下命令中的任何一个

  • grails exit
  • grails stop-app
  • grails quit

答案 1 :(得分:12)

没有。 grails run-app旨在以交互方式运行以进行开发。

如果要将grails控制为服务,则应将其部署到Web应用程序容器(如tomcat)。例如,tomcat插件允许您轻松地将应用程序部署到tomcat。添加

之类的行
tomcat.deploy.username="manager"
tomcat.deploy.password="secret"
tomcat.deploy.url="http://myserver.com/manager"

到Config.groovy然后你可以使用

grails tomcat deploy
grails tomcat undeploy

启动和停止您的申请。或者,您可以使用grails war将您的应用捆绑到一个所有Java应用服务器都应该能够使用的war存档中。

如果你真的想在没有 Ctrl + C 的情况下停止grails run-app,请编写一个调用System.exit(0)的小型控制器。然后浏览到该URL,或编写一个小的shell脚本或批处理文件,用它来调用它。 wgetcurl

答案 2 :(得分:7)

打开一个新的命令行窗口,转到项目目录并输入:

grails stop-app

如果应用程序以分叉模式运行,这将停止应用程序。 然后,您可以转到相同的URL,看到该页面将不会显示,即服务器已停止,因为在执行命令时也会指定该服务器。

-

grails退出

如果以非分叉模式运行,这将停止应用程序,否则它将退出控制台

-

grails退出

退出控制台。

答案 3 :(得分:6)

在Grails 2.3.3中,在命令行上运行'grails dev run-app'会使命令窗口处于一种不确定状态。它不会返回命令提示符,Ctrl-C不执行任何操作,您必须恢复为手动终止进程。

遵循预期用法会更加愉快,如下所示:

  1. 在命令行中,输入命令' grails '并按回车(注意没有给出参数)。这会启动grails本身,(只有grails,即它不启动你的服务器或应用程序)。这导致一个新的java进程。它还会为您提供grails提示,因此您仍然可以控制。
  2. 1.1在grails提示符下,您可以通过键入“ run-app ”来启动服务器(和应用程序)。这将启动您的服务器(在开发模式下),并再次返回grails提示。在服务器运行的情况下,您现在有两个Java进程在运行,一个用于grails,另一个用于服务器和应用程序。

    1.2如果要停止服务器(和应用程序),可以在grails提示符下输入“ stop-app ”,这将停止服务器和应用程序。此外,你得到你的grails提示。停止服务器/应用程序后,您将回到只运行一个Java进程,即grails。

    1.3在grails提示下,您可以根据需要多次启动和停止应用程序。

    1.4要停止grails本身,在grails提示符下,您可以输入'退出'或'退出',然后grails将退出,并让您回来正常的命令提示符。此时,grails java进程也应该消失,因此不应该运行java进程。

    我相信所有grails 2.3.x的行为都是这样的。 我的系统是Windows 7。

    希望这会有所帮助。 诺尔

答案 4 :(得分:3)

在Grails 2.1.0中,一个简单的“退出”会停止服务器

答案 5 :(得分:1)

我发现了一种适合Grails 2.0.1的简洁方法。

这是一个使用GrailsRun.groovy中的hack在运行功能测试后关闭服务器的黑客攻击。 (见第246行)

在名为.kill-run-app

的应用程序中创建一个文件

当Grails看到.kill-run-app文件时,会发出grailsS​​erver.stop()。它还可以方便地删除文件。这可能取决于启用autoRecompile。我不确定,就像我说这是一个黑客。

有一天,当GrailsRun.groovy脚本发生变化时,它很可能会停止工作。

我创建了一个简单的Ant目标来执行此操作。当然,您需要另一个终端来执行它(实际上我是从Eclipse运行它)。

<target name="kill-app" description="--> Kills Grails web application" depends="">
  <touch file="${basedir}/.kill-run-app"/>
</target>

答案 6 :(得分:0)

快速方法是杀死java进程:

ps -aux | grep grails

将“容器上方的进程ID”删除到您的应用程序“

答案 7 :(得分:0)

我是Grails的新手,我也有这个“问题”。我写了一个小脚本(称为格式;-)),它杀死了所有的grails-processes。

#!/bin/bash
for P in $(ps aux | grep grails | grep java | awk '{print $2};'); do
kill -9 $P
done
exit 0

答案 8 :(得分:0)

我有同样的问题来阻止我正在运行的grails服务器。我做了

  1. ps aux | grep grails - &gt;那给了我PID
  2. kill -9 PID
  3. 这样我就可以停止正在运行的服务器了。希望有所帮助。