【问题标题】:How to kill a Play server from a different console?如何从不同的控制台杀死 Play 服务器?
【发布时间】:2014-08-29 23:57:42
【问题描述】:
在命令行中,输入play run后,我读到了一些关于停止播放服务器的方法:
- You can press Ctrl+ D
- 您可以send a
SIGTERM to the process,基于RUNNING_PID(生产中)。
- 在 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 中按名称搜索进程,然后将其停在那里