首页 文章

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

提问于
浏览
16

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

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

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

其中2美元是港口 .

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

10 回答

  • 1

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

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

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

  • 5

    如果您运行Tomcat for Windows not like a service 并且不想利用JMX,最好的方法是

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

    哪里:

    • Tomcat - 默认情况下Tomcat终端窗口的窗口 Headers

    • java.exe - Tomcat进程的名称 . NOT tomcat.exe .

  • 3

    您可以使用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 /? .

  • 1

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

    使用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是使查找操作不区分大小写 .

  • 6

    这是在问题中询问的基于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
    
  • 3

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

    netstat -a -n | findstr:8005

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

  • 0

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

    你会发现那里列出了8080端口 .

  • -4

    我通过从命令行调用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

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

    例如:

    ps|grep tomcat
    

相关问题