【问题标题】:How to kill a Play server from a different console?如何从不同的控制台杀死 Play 服务器?
【发布时间】:2014-08-29 23:57:42
【问题描述】:

在命令行中,输入play run后,我读到了一些关于停止播放服务器的方法:

  1. You can press Ctrl+ D
  2. 您可以send a SIGTERM to the process,基于RUNNING_PID(生产中)。
  3. 在 Windows 中,您可以手动终止正在运行的 Java 进程(在命令行上可能使用 taskkill

问题是#1 要求你在同一个控制台上,#2 要求你知道进程 ID(在开发环境中不会写入文件),#3 可以停止超过只是服务器。

有没有办法从另一个控制台(在 Windows 7 或 Windows 8 上)杀死非生产/开发环境中的 Play 服务器?理想情况下,类似于 Ctrl+ D,但来自不同的控制台?

【问题讨论】:

    标签: java windows command-line playframework-2.0 kill-process


    【解决方案1】:

    不...您不能从其他控制台杀死应用程序,但您可以维护自己的 pid 文件,即使用 Global object:

    import org.apache.commons.io.FileUtils;
    import play.Application;
    import play.GlobalSettings;
    import play.Play;
    
    import java.io.File;
    import java.io.IOException;
    import java.lang.management.ManagementFactory;
    
    public class Global extends GlobalSettings {
    
    
        @Override
        public void beforeStart(Application app) {
            if (!Play.isProd()) {
                try {
                    FileUtils.writeStringToFile(new File("DEVELOPMENT_PID"), ManagementFactory.getRuntimeMXBean().getName().split("@")[0]);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    注意,这将在第一次请求后保存/更新...我没有在 Windows 上测试过

    使用其他更舒适的方式来启动/停止开发应用程序,例如:支持 Play 的 Intellij Idea,当Run Configuration 正确完成时,您只需使用 IDE 中的按钮/快捷方式即可。

    最后你可以尝试在 TaskManager 中按名称搜索进程,然后将其停在那里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多