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

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

我正在写一个批处理脚本,必须这样做。 这是Bash版本:

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

港口2美元。

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

你可以使用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 /? 了解详情。

使用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" 

使用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" 

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

这是基于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 

那么,我不太擅长脚本,但也许你可以用这个作为起点:

netstat -a -n | findstr:8005

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

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

你会在那里找到8080端口。

如果你运行Windows的Tomcat而不是一个服务,并且不想利用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

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

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

状态可以是像STOPPED,RUNNING …

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

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

例如:

 ps|grep tomcat