16

play stopPlay 2.1相当于什么?

如果我这样做play start了,我如何干净地终止该过程?

4

7 回答 7

18

Windows正在使用以下脚本来终止当前正在运行的播放服务器

@echo off
if exist RUNNING_PID (
  setlocal EnableDelayedExpansion
  set /p PLAY_PID=<RUNNING_PID
  echo killing pid !PLAY_PID!
  taskkill /F /PID !PLAY_PID!
  del RUNNING_PID
  endlocal
) 
于 2014-02-28T07:36:40.900 回答
12

文档中所述

当您运行 start 命令时,Play 会创建一个新的 JVM 并运行默认的 Netty HTTP 服务器。标准输出流被重定向到 Play 控制台,因此您可以监控其状态。

服务器的进程 ID 在引导时显示并写入 RUNNING_PID 文件。要杀死正在运行的 Play 服务器,只需向进程发送 SIGTERM 以正确关闭应用程序即可。

如果您按 Ctrl+D,Play 控制台将退出,但创建的服务器进程将继续在后台运行。然后关闭分叉的 JVM 的标准输出流,并且可以从 logs/application.log 文件中读取日志记录。

所以我认为你必须使用play run而不是play start. 然后你就可以Ctrl+D用来停止播放了。

于 2013-02-25T20:45:44.133 回答
10

您可以运行此脚本:

kill $(cat /your-play-project-path/target/universal/stage/RUNNING_PID)
于 2015-01-18T07:15:39.040 回答
8

如果您使用该play start命令运行您的应用程序,则从应用程序目录发出该play stop命令确实有效,并将停止正在运行的应用程序服务器。

我在 Play 2.1.1 中验证了此功能。

于 2013-06-25T01:00:23.057 回答
0

为此,您可以按照此处所述修改 build.sbt 文件。

TaskKey[Unit]("stop") := {
  val pidFile = target.value / "universal" / "stage" / "RUNNING_PID"
  if (!pidFile.exists) throw new Exception("App not started!")
  val pid = IO.read(pidFile)
  s"kill $pid".!
  println(s"Stopped application with process ID $pid")
}

但是,这只适用于 *nix 系统。

于 2014-12-11T07:33:44.620 回答
0

只需Ctrl + D在控制台窗口中按。

于 2013-02-25T20:27:13.637 回答
0

您可以致电<your_server_url>/@kill,例如:http://localhost:9022/app3/@kill

于 2017-03-13T08:27:55.883 回答