执行后grails run-app
,除了使用Ctrl+ C",还有关闭命令吗?
9 回答
对于停止服务器
从终端退出并使用以下命令中的任何一个:
grails exit
grails stop-app
grails quit
No. 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 应用程序服务器都应该能够使用的战争存档中。
如果您真的想停止grails run-app
,请Ctrl+C编写一个调用System.exit(0)
. 然后浏览到那个 URL,或者编写一个小的 shell 脚本或批处理文件来调用它,例如wget
或curl
.
打开一个新的命令行窗口,进入项目目录并输入:
grails stop-app
如果应用程序在分叉模式下运行,这将停止应用程序。然后您可以转到相同的 URL 并看到该页面不会显示,即服务器已停止,因为它也会在命令执行时指定。
grails exit
如果在非分叉模式下运行,这将停止应用程序,否则它将退出控制台。
grails quit
退出控制台。
在 Grails 2.3.3 中,在命令行上运行 'grails dev run-app' 会使命令窗口处于一种不确定状态。它不会给您返回命令提示符,Ctrl-C 什么也不做,您必须恢复手动终止进程。
遵循预期的用法会更愉快,如下所示:
- 在命令行上,输入命令“ grails ”并按回车键(注意没有给出参数)。这会启动 grails 本身(并且仅启动 grails,即它不会启动您的服务器或应用程序)。这会产生一个新的 java 进程。它还为您提供 grails 提示,因此您仍然可以控制。
1.1 在 grails 提示符下,您可以通过键入“ run-app ”来启动您的服务器(和应用程序)。这将启动您的服务器(在开发模式下),并再次返回 grails 提示符。随着您的服务器运行,您现在有两个 Java 进程在运行,一个用于 grails,另一个用于您的服务器和应用程序。
1.2 如果要停止服务器(和应用程序),可以在 grails 提示符下输入“ stop-app ”,这将停止服务器和应用程序。此外,您还会得到 grails 提示。停止您的服务器/应用程序后,您将恢复到只有一个 java 进程正在运行,即 grails。
1.3 在 grails 提示符下,您可以根据需要多次启动和停止您的应用程序。
1.4 要停止 grails 本身,在 grails 提示符下,您可以输入 ' exit ' 或 ' quit ',然后 grails 将退出,并让您返回正常的命令提示符。此时,grails java 进程也应该没有了,所以应该没有 java 进程在运行。
我相信所有 grails 2.3.x 的行为都是这样的。我的系统是windows 7。
希望这可以帮助。诺埃尔
在 Grails 2.1.0 中,一个简单的“退出”会停止服务器
我找到了一种适用于我的 Grails 2.0.1 的简洁方法。
这是一个 hack,它使用 GrailsRun.groovy 中的 hack 在运行功能测试后关闭服务器。(见第 246 行)
在应用程序 basedir 中创建一个名为 .kill-run-app 的文件
当 Grails 看到 .kill-run-app 文件时,它会发出 grailsServer.stop()。它还可以方便地删除文件。这可能取决于是否启用了 autoRecompile。我不确定,就像我说的那样,这是一个 hack。
有一天,当 GrailsRun.groovy 脚本更改时,它很可能会停止工作。
为此,我创建了一个简单的 Ant 目标。当然,您将需要另一个终端来执行它(实际上我从 Eclipse 运行它)。
<target name="kill-app" description="--> Kills Grails web application" depends="">
<touch file="${basedir}/.kill-run-app"/>
</target>
快速的方法是杀死java进程:
ps -aux | grep grails
杀死“来自上面的过程 ID,它是您的应用程序的容器”
我是 Grails 的新手,我也遇到了这个“问题”。我写了一个小脚本(称为grill ;-)),它杀死了所有的grails 进程。
#!/bin/bash
for P in $(ps aux | grep grails | grep java | awk '{print $2};'); do
kill -9 $P
done
exit 0
我有同样的问题来停止我正在运行的 grails 服务器。我做了
- ps辅助| grep grails --> 这给了我 PID
- 杀死 -9 PID
这样我就可以停止我正在运行的服务器。希望有帮助。