如何使用命令关闭 grails run-app
Posted
技术标签:
【中文标题】如何使用命令关闭 grails run-app【英文标题】:How to use command to shutdown grails run-app 【发布时间】:2011-04-04 21:23:12 【问题描述】:执行grails run-app
后,除了使用Ctrl + C",有没有关闭的命令?
【问题讨论】:
【参考方案1】:停止服务器
从终端退出并使用以下命令中的任何一个:
grails exit
grails stop-app
grails quit
【讨论】:
【参考方案2】:没有。 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 应用程序服务器都应该能够使用的战争档案中。
如果你真的想在没有 Ctrl+C 的情况下停止 grails run-app
,请编写一个调用 System.exit(0)
的小控制器。然后浏览到该 URL,或编写一个小的 shell 脚本或批处理文件来调用它,例如wget
或 curl
。
【讨论】:
如果您确实通过网络可访问的控制器操作来终止应用程序,请确保在部署到生产之前将其删除,或者对其进行严格保护,以便恶意用户不能直接杀死你的应用。【参考方案3】:打开一个新的命令行窗口,进入项目目录并输入:
grails stop-app
如果应用程序在分叉模式下运行,这将停止应用程序。 然后您可以转到相同的 URL 并看到该页面不会显示,即服务器已停止,因为它也会在命令执行时指定。
grails exit
如果在非分叉模式下运行,这将停止应用程序,否则将退出控制台。
grails quit
退出控制台。
【讨论】:
【参考方案4】:在 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。
希望这会有所帮助。 诺埃尔
【讨论】:
【参考方案5】:在 Grails 2.1.0 中,一个简单的“退出”会停止服务器
【讨论】:
【参考方案6】:我发现了一种适用于我的 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>
【讨论】:
【参考方案7】:快速的方法是杀死java进程:
ps -aux | grep grails
kill "proess ID from above that is container to your application"
【讨论】:
【参考方案8】:我是 Grails 的新手,我也遇到过这个“问题”。我写了一个小脚本(称为 Grill ;-))杀死所有 grails 进程。
#!/bin/bash
for P in $(ps aux | grep grails | grep java | awk 'print $2;'); do
kill -9 $P
done
exit 0
【讨论】:
【参考方案9】:我在停止正在运行的 grails 服务器时遇到了同样的问题。我做了
-
ps 辅助 | grep grails --> 这给了我 PID
杀死 -9 PID
这样我就可以停止正在运行的服务器。希望对您有所帮助。
【讨论】:
以上是关于如何使用命令关闭 grails run-app的主要内容,如果未能解决你的问题,请参考以下文章
运行 GRAILS run-app 时如何跳过插件更新提示?
当我使用 run-app 但部署 .war 时,Grails 操作是安全的