【问题标题】:How to use command to shutdown grails run-app如何使用命令关闭 grails run-app
【发布时间】:2011-04-04 21:23:12
【问题描述】:

执行grails run-app后,除了使用Ctrl + C",有没有关闭的命令?

【问题讨论】:

    标签: grails shutdown run-app


    【解决方案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 什么都不做,你必须恢复手动杀死进程。

        按照预期的用法会更愉快,如下:

        1. 在命令行中,输入命令“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 服务器时遇到了同样的问题。我做了

                  1. ps 辅助 | grep grails --> 这给了我 PID
                  2. 杀死 -9 PID

                  这样我就可以停止正在运行的服务器。希望对您有所帮助。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-07-01
                    • 1970-01-01
                    • 2023-04-07
                    • 1970-01-01
                    相关资源
                    最近更新 更多