variable the stop start servidor reiniciar nor neither jre_home java_home windows tomcat batch-file

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í.