使用命令提示符确定Tomcat是否在Windows中运行

时间:2011-06-02 20:46:34

标签: windows tomcat batch-file

很简单,如何使用命令提示符确定Tomcat是否在Windows中运行?

我正在编写必须执行此操作的批处理脚本。这是Bash版本:

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

其中$ 2是端口。

我正在寻找类似的东西。使用Cygwin是不可能的,这个脚本必须能够在只有Tomcat的机器上运行。

10 个答案:

答案 0 :(得分:6)

使用SC命令测试Tomcat服务的状态。 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"

答案 1 :(得分:5)

您可以使用tasklist来检查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 :(得分: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"

注意:/ i是使查找操作不区分大小写。

答案 3 :(得分:3)

这是在问题中询问的基于netstat的UNIX / LINUX解决方案的Windows版本:

@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

答案 4 :(得分:1)

嗯,我对脚本不是很好,但也许你可以用它作为起点:

  

netstat -a -n | findstr:8005

如果有人正在侦听端口8005,那就是。这是Tomcat的远程管理默认端口,即启动或关闭。
或者,您可以使用http服务器侦听的端口 希望这有帮助

答案 5 :(得分:1)

在命令提示符下使用netstat -a。

你会在那里找到8080端口。

答案 6 :(得分:1)

如果您运行Tomcat for Windows 而不是服务并且不想利用JMX,最好的方法是

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

其中:

  • Tomcat - 默认情况下Tomcat终端窗口的窗口标题
  • java.exe - Tomcat程序的名称。 NOT tomcat.exe

答案 7 :(得分:0)

还有另一种选择,因为这可能是作为服务运行的

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

状态可以是STOPPED,RUNNING ......

答案 8 :(得分:0)

我通过从命令行调用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崩溃,该服务仍会显示为正在运行的实际端口无法访问

答案 9 :(得分:-4)

您可以尝试搜索流程并提取行

例如:

ps|grep tomcat