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