如何使用命令关闭 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 脚本或批处理文件来调用它,例如wgetcurl

【讨论】:

如果您确实通过网络可访问的控制器操作来终止应用程序,请确保在部署到生产之前将其删除,或者对其进行严格保护,以便恶意用户不能直接杀死你的应用。【参考方案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 文件时,它会发出 grailsS​​erver.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 配置 Grails 访问日志

当我使用 run-app 但部署 .war 时,Grails 操作是安全的

为 grails run-app 增加 Xmx 和 Xms

Intellij IDEA 14 grails run-app 错误

在 Grails 中制作 WAR 文件