< p >“play stop”在Play 2.1中的等效命令是什么?
如果我执行了“play start”,那么如何干净地终止该进程?
如果我执行了“play start”,那么如何干净地终止该进程?
在 Windows
上,我正在使用以下脚本来终止当前运行的 play 服务器
@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
)
如文档所述:
当您运行start命令时,Play会分叉一个新的JVM并运行默认的Netty HTTP服务器。标准输出流将重定向到Play控制台,因此您可以监视其状态。
服务器的进程ID在引导时显示,并写入RUNNING_PID文件。要杀死正在运行的Play服务器,只需向进程发送SIGTERM即可正确关闭应用程序。
如果您键入Ctrl + D,则Play控制台将退出,但创建的服务器进程将继续在后台运行。然后关闭分叉的JVM标准输出流,并且可以从logs/application.log日志中读取日志记录。
因此,我认为您必须使用play run
而不是play start
。然后您将能够使用Ctrl+D停止play。
play start
的意思以前完全不同,而生产则是通过完全不同的方式实现的。 - ripper234play run
运行于开发模式,仅用于开发目的,不适用于生产环境。 - Vladimir Prudnikov您可以运行这个脚本:
kill $(cat /your-play-project-path/target/universal/stage/RUNNING_PID)
play start
命令运行应用程序,那么在应用程序目录中发出play stop
命令可以停止运行中的应用程序服务器。<your_server_url>/@kill
,例如:http://localhost:9022/app3/@kill
。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系统。
play run
和play start
之间的区别 -> https://dev59.com/9nHYa4cB1Zd3GeqPMo3Q#16291499 - Benj