Определите, работает ли Tomcat в Windows, используя командную строку - PullRequest
16 голосов
/ 03 июня 2011

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

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

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

Где $ 2 - порт.

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

Ответы [ 10 ]

6 голосов
/ 15 июня 2011

Проверьте состояние службы Tomcat с помощью команды SC .MJB уже предложил проверить состояние службы с помощью SC, еще один пакетный скрипт (без цикла 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"
5 голосов
/ 10 июня 2011

Вы можете использовать список задач, чтобы проверить, запущен ли исполняемый файл 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 /?.

3 голосов
/ 08 октября 2012

Это 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
3 голосов
/ 12 июня 2011

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

примечание: / i делает операцию поиска без учета регистра.

1 голос
/ 10 июля 2016

Если вы запускаете 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 .
1 голос
/ 27 марта 2013

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

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

1 голос
/ 03 июня 2011

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

netstat -a -n | findstr: 8005

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

0 голосов
/ 04 октября 2013

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

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

Сохраните приведенный ниже скрипт как 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 служба все равно будет отображаться как работающая там, где фактически порт недоступен

0 голосов
/ 15 июня 2011

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

Например:

ps|grep tomcat
0 голосов
/ 12 июня 2011

Еще один вариант, поскольку он, вероятно, работает в качестве службы.

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

Состояние может быть таким, как STOPPED, RUNNING ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...