windows - the - tomcat install service
Determine si Tomcat se está ejecutando en Windows usando el símbolo del sistema (10)
Bueno, no soy muy bueno con los scripts, pero quizás puedas usar esto como punto de partida:
netstat -a -n | findstr: 8005
Para saber si alguien está escuchando en el puerto 8005. Ese es el puerto predeterminado de Tomcat para la administración remota, es decir, el inicio o el apagado.
Alternativamente, podría usar el puerto que escucha el servidor http.
Espero que esto ayude
En pocas palabras, ¿cómo se determina si Tomcat se está ejecutando en Windows o no, utilizando el símbolo del sistema?
Estoy escribiendo un script por lotes que debe hacer esto. Esta es la versión Bash :
RESULT=`netstat -na | grep $2 | awk ''{print $7}'' | wc -l`
Donde $ 2 es el puerto.
Estoy buscando algo similar a eso. El uso de Cygwin está fuera de discusión, por supuesto, este script debe poder ejecutarse en máquinas que solo tienen Tomcat.
Esta es la versión para Windows de la solución UNIX / LINUX basada en netstat que se hace en la pregunta:
@echo off
netstat -na | find "LISTENING" | find /C /I ":8080" > NUL
if %errorlevel%==0 goto :running
echo tomcat is not running
goto :eof
:running
echo tomcat is running
:eof
Lo compruebo llamando a un script vb desde la línea de comandos
cscript //nologo checkurl.vbs | findstr "200"
IF errorlevel 1 GOTO :not_running
Guarde el siguiente script como checkurl.vbs y reemplace la ip con las máquinas ip
'' Create an HTTP object
myURL = "http://10.1.1.1:8080/"
Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
'' Download the specified URL
objHTTP.Open "GET", myURL, False
On Error Resume Next
objHTTP.Send
intStatus = objHTTP.Status
If intStatus = 200 Then
WScript.Echo intStatus
Else
WScript.Echo "Error Connecting"
End If
Tuve problemas con el uso del comando sc query
, porque incluso si Tomcat fallaba, el servicio todavía se mostraría como ejecutándose donde en el puerto real no se podía acceder
Otra opción más, ya que probablemente se esté ejecutando como un servicio.
FOR /F "tokens=4 delims= " %%A IN (''SC QUERY tomcat5 ^| FIND "STATE"'') DO SET status=%%A
echo "%status%"
El estado puede ser cosas como STOPPED, RUNNING ...
Podría usar la lista de tareas para verificar si el ejecutable de Tomcat se está ejecutando. Por ejemplo:
@echo off
tasklist /FI "IMAGENAME eq tomcat.exe" | find /C /I ".exe" > NUL
if %errorlevel%==0 goto :running
echo tomcat is not running
goto :eof
:running
echo tomcat is running
:eof
También es posible verificar un servidor de eliminación usando las opciones /S
, /U
y /P
Ver tasklist /?
para detalles.
Pruebe el estado del servicio Tomcat con el comando SC . MJB ya sugirió probar el estado del servicio con SC, otro script por lotes (sin el bucle FOR) para probar el estado:
@ECHO OFF
SC query tomcat5 | FIND "STATE" | FIND "RUNNING" > NUL
IF ERRORLEVEL 1 (
ECHO Stopped
) ELSE (
ECHO Running
)
Si no está seguro de si el nombre del servicio es tomcat5 , puede enumerar todos los nombres de servicio con
SC query state= all | FIND "SERVICE_NAME"
Puedes intentar buscar el proceso y extraer la línea.
Por ejemplo:
ps|grep tomcat
Si ejecuta Tomcat para Windows no le gusta un servicio y no quiere explotar JMX, la mejor manera es
for /F %%I in (''tasklist /FI "WINDOWTITLE eq Tomcat" /NH'') do if %%I==java.exe goto alreadyRun
dónde:
- Tomcat: el título de la ventana de la ventana del terminal de Tomcat por defecto
- java.exe - el nombre del proceso de Tomcat. NO tomcat.exe .
Usando WMIC
@echo off
wmic process list brief | find /i "tomcat.exe"
set result=%ERRORLEVEL%
if "%result%"=="1" echo "not running"
if "%result%"=="0" echo "running"
nota: / i es hacer que la operación de búsqueda no distinga mayúsculas de minúsculas.
use netstat -a en el símbolo del sistema.
Encontrarás 8080 puertos listados allí.