回答
如前所述in the doc:
当您运行启动命令,播放叉一个新的JVM,并运行默认Netty的HTTP服务器。标准输出流被重定向到Play控制台,因此您可以监控其状态。
服务器的进程ID在引导时显示并写入RUNNING_PID文件。要杀死正在运行的Play服务器,向进程发送SIGTERM以正确关闭应用程序就足够了。
如果您键入Ctrl + D,Play控制台将退出,但创建的服务器进程将继续在后台运行。然后关闭分叉的JVM的标准输出流,并且可以从logs/application.log文件中读取日志记录。
所以我认为你必须使用play run
而不是play start
。然后你可以使用Ctrl + D停止播放。
如果您使用play start
命令运行应用程序,则从app目录发出play stop
命令可以正常工作,并且会停止正在运行的应用程序服务器。
我通过Play 2.1.1验证了这一点。
在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
)
很好用。你有什么技巧可以在Windows上启动Play应用程序吗?目前我正在使用“play start”,但我正在考虑编写一个脚本,在服务器重新启动后自动启动应用程序。理想的情况是将应用程序封装在Windows服务中,但从我看到的情况来看,这似乎并不简单。 – Ian 2014-03-17 10:26:33
+1 - 这适用于我们。我在我们的开发和测试环境的每个子文件夹中使用它。 – rishimaharaj 2014-07-14 16:25:39
@Ian几年后,但对于社区:查看“运行”和“运行启动”之间的区别 - > http://stackoverflow.com/a/16291499/1579667 – Benj 2017-03-13 08:30:20
要做到这一点,你可以修改build.sbt文件as described here。
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系统。
您可以运行此脚本:
kill $(cat /your-play-project-path/target/universal/stage/RUNNING_PID)
你可以叫<your_server_url>/@kill
,例如:http://localhost:9022/app3/@kill
- 1. Play Framework 2.1.x CascadeType.DETACH
- 2. Chrome中的Play Framework 2.1 websockets
- 3. Play Framework 2.1 IDE设置
- 4. 在Play framework 2.1中集成Spring和Hibernate?
- 5. scala.tools.nsc.IMain Play 2.1内
- 6. show hide div/play stop audio
- 7. 为什么Play Framework 2.3.8部署失效?
- 8. play-framework [2.0] HTTPS
- 9. Play Framework 2 HornetQ
- 10. akka with play framework
- 11. QueryDSL和Play Framework
- 12. Play Framework + tomcat
- 13. Play Framework 2 slugify
- 14. Play Framework 2.4 Ebean
- 15. DTO in Play Framework
- 16. RedHat的Play Framework 2新贵
- 17. @with注释的含义是什么? (Play Framework)
- 18. Play Framework requirejs data-main
- 19. Browserify/CommonJS与Play Framework
- 20. Play-Framework&Ajax如何?
- 21. JSON渲染Scala/Play 2.1
- 22. Heroku支持Play 2.1吗?
- 23. Play Framework的联系点?
- 24. Play Framework的维护模式
- 25. Play Framework的异步映射
- 26. 未找到Play Framework的hibernate.cfg.xml
- 27. Play Framework 2.1和Ebean:模型Finder不返回任何数据
- 28. 部署Play Framework 2.1应用程序到Jelastic
- 29. 在Play中支持HTTP“MERGE”动词! Framework 2.1?
- 30. 如何使用Play Framework 2.1安排每小时工作?
令人讨厌的是,他们如何从Play 1中改变了这么多简单的语义。“play start”意味着完全不同的东西,并且生产是通过完全不同的方式实现的。 – ripper234 2013-02-25 20:48:43
是的,它是完全不同的;你将不得不重新学习(几乎)所有的东西:-( – 2013-02-25 20:52:30
'play run'运行在开发模式下,它是用于开发而不是生产的。 – 2015-01-01 14:35:09