当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
Tomcat配置为使用其他端口或IP,请相应地在脚本的第四行上编辑正则表达式。
最后,我要指出的是,在Linux上情况更好,因为您可以指示Tomcat在启动时将其PID保存到文件中,并使用开关强制关闭,之后-“ nix系统的关闭脚本已经具有netstat
不需要杀死进程和侦查工作的能力。