この問題は、シャットダウン命令が送信されたにもかかわらず、Apache Tomcatが適切に終了しない場合によく発生します。私の場合、Tomcat 8を使用すると、これは煩わしい規則性で発生します。さいわい、Windows PowerShellとnetstat
コマンドを使用して、プロセスを強制終了する簡単なスクリプトを作成できます。
次のPowerShellスクリプトは、からの出力を解析して、netstat
でリッスンしているプロセスを見つけ127.0.0.1:8005
、そのPIDを抽出して、そのプロセスを強制終了します。
netstat -a -o -n `
| select -skip 4 `
| % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} `
| ? {$_.Fields[1] -match '127\.0\.0\.1\:8005$'} `
| % {Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] }
server.xml
別のポートまたはIPを使用するようにTomcatを構成している場合は、それに応じてスクリプトの4行目の正規表現を編集します。
最後に、Tomcatに起動時にPIDをファイルに保存し、スイッチを使用して強制的にシャットダウンするように指示できるので、状況はLinuxのほうが良いことを指摘しておきます-'nixシステムのシャットダウンスクリプトにはすでにプロセスを殺す能力との探求能力netstat
は必要ありません。