El problema a menudo surge cuando Apache Tomcat no puede terminar, correctamente, a pesar de que se envió una instrucción de apagado. En mi caso, usando Tomcat 8, esto sucede con una molesta regularidad. Afortunadamente, puede usar Windows PowerShell y el netstat
comando para crear una secuencia de comandos simple para matar el proceso.
El siguiente script de PowerShell analizará la salida netstat
para encontrar cualquier proceso que esté escuchando 127.0.0.1:8005
, extraer su PID y luego eliminar ese proceso:
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] }
Si server.xml
configura Tomcat para usar un puerto o IP diferente, edite la expresión regular en la cuarta línea del script en consecuencia.
Finalmente, debo señalar que la situación es mejor en Linux porque puede indicarle a Tomcat que guarde su PID en un archivo en el momento del inicio y usar un interruptor para forzar el apagado, más tarde, el script de apagado para los sistemas 'nix ya presenta el netstat
No se requiere la capacidad de matar el proceso y el trabajo de detective .
netstat -ano | findStr 8080
para encontrar los servicios en ejecución y luego encontrar la identificación del proceso y copiar el pid y ejecutar el comando nuevamente comotaskkill /F /PID pid_number