Определите, работает ли 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