Определите, работает ли Tomcat в Windows с помощью командной строки

Достаточно просто, как определить, работает ли Tomcat в Windows, используя командную строку?

Я пишу пакет script, который должен это сделать. Это Bash версия:

RESULT=`netstat -na | grep $2 | awk '{print $7}' | wc -l`

Где $2 - это порт.

Я ищу что-то похожее на это. Использование Cygwin не может быть и речи, по необходимости этот script должен работать на машинах, у которых есть только Tomcat.

Ответы

Ответ 1

Вы можете использовать список задач, чтобы проверить, работает ли исполняемый файл tomcat. Например:

@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

Также можно проверить удаляемый сервер с помощью опций /S, /U и /P. Подробнее см. tasklist /?.

Ответ 2

Проверьте состояние службы Tomcat с помощью команды SC. MJB уже предложил проверить статус службы с помощью SC, еще одну партию script (без цикла FOR) для проверки состояния:

@ECHO OFF
SC query tomcat5 | FIND "STATE" | FIND "RUNNING" > NUL
IF ERRORLEVEL 1 (
    ECHO Stopped
) ELSE (
    ECHO Running
)

Если вы не уверены, что имя службы - tomcat5, вы можете перечислить все имена служб с помощью

SC query state= all | FIND "SERVICE_NAME"

Ответ 3

Использование 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"

note:/i - сделать операцию поиска нечувствительной к регистру.

Ответ 4

Это версия Windows для решения UNIX/LINUX на основе netstat, заданная в вопросе:

@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

Ответ 5

Ну, я не очень хорошо разбираюсь в скриптах, но, возможно, вы можете использовать это как отправную точку:

netstat -a -n | findstr: 8005

Получить, если кто-то прослушивает порт 8005. Это порт по умолчанию Tomcat для удаленного администрирования, то есть запуск или завершение работы.
В качестве альтернативы вы можете использовать порт, который слушает HTTP-сервер.
Надеюсь, что это поможет

Ответ 6

используйте команду netstat -a в командной строке.

Здесь вы найдете список 8080.

Ответ 7

Если вы запускаете Tomcat для Windows не как сервис и не хотите использовать JMX, лучший способ -

for /F %%I in ('tasklist /FI "WINDOWTITLE eq Tomcat" /NH') do if %%I==java.exe goto alreadyRun

где:

  • Tomcat - название окна окна терминала Tomcat по умолчанию
  • java.exe - имя процесса Tomcat. НЕ tomcat.exe.

Ответ 8

Еще один вариант, так как это, вероятно, работает как служба

FOR /F "tokens=4 delims= " %%A IN ('SC QUERY tomcat5 ^| FIND "STATE"') DO SET status=%%A
echo "%status%"
Статус

может быть таким, как STOPPED, RUNNING...

Ответ 9

Я проверяю его, вызывая vb script из командной строки

cscript //nologo checkurl.vbs | findstr "200"
IF errorlevel 1 GOTO :not_running 

Сохраните ниже script как checkurl.vbs и замените ip на машины 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

У меня возникли проблемы с использованием команды sc query, потому что даже если tomcat разбился, служба все равно будет отображаться как работающая, где в действительности порт не был доступен

Ответ 10

Вы можете попробовать выполнить поиск и извлечь строку

Например:

ps|grep tomcat