play stop
Play 2.1に相当するものは何ですか?
もしそうならplay start
、どうすればプロセスをきれいに終了できますか?
play stop
Play 2.1に相当するものは何ですか?
もしそうならplay start
、どうすればプロセスをきれいに終了できますか?
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
)
ドキュメントに記載されているように:
startコマンドを実行すると、Playは新しいJVMをフォークし、デフォルトのNettyHTTPサーバーを実行します。標準出力ストリームはPlayConsoleにリダイレクトされるため、そのステータスを監視できます。
サーバーのプロセスIDはブートストラップで表示され、RUNNING_PIDファイルに書き込まれます。実行中のPlayサーバーを強制終了するには、プロセスにSIGTERMを送信して、アプリケーションを適切にシャットダウンするだけで十分です。
Ctrl + Dを入力すると、Play Consoleは終了しますが、作成されたサーバープロセスはバックグラウンドで実行され続けます。次に、フォークされたJVMの標準出力ストリームが閉じられ、logs/application.logファイルからログを読み取ることができます。
play run
ですから、の代わりに使用する必要があると思いますplay start
。Ctrl+Dその後、プレイを停止するために使用できるようになります。
次のスクリプトを実行できます。
kill $(cat /your-play-project-path/target/universal/stage/RUNNING_PID)
コマンドを使用してアプリを実行した場合、アプリディレクトリからplay start
コマンドを発行するplay stop
と機能し、実行中のアプリケーションサーバーが停止します。
これがPlay2.1.1で機能することを確認しました。
Ctrl + Dコンソールウィンドウを押すだけです。
これを実現するには、ここで説明するように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システムにのみ適用されます。
あなたは呼び出すことができます<your_server_url>/@kill
、例えば:http://localhost:9022/app3/@kill