簡體   English   中英

使用命令提示符確定 Tomcat 是否在 Windows 中運行

[英]Determine if Tomcat is running in Windows using the command prompt

很簡單,如何使用命令提示符確定 Tomcat 是否在 Windows 中運行?

我正在編寫一個必須執行此操作的批處理腳本。 這是Bash版本:

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

其中 $2 是端口。

我正在尋找類似的東西。 使用Cygwin是不可能的,這個腳本必須能夠在只有 Tomcat 的機器上運行。

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

您可以使用 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 /? 詳情。

這是問題中提出的基於 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

使用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 是為了使查找操作不區分大小寫。

在命令提示符下使用 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 終端 window 的 window 標題
  • java.exe - Tomcat 進程的名稱。 不是 tomcat.exe

好吧,我不太擅長腳本,但也許你可以以此為起點:

網絡統計-a -n | findstr:8005

獲取是否有人在監聽端口 8005。這是 Tomcat 用於遠程管理的默認端口,即啟動或關閉。
或者,您可以使用 http 服務器偵聽的端口。
希望這可以幫助

我通過從命令行調用 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 崩潰,該服務仍會顯示為正在運行,而實際上端口無法訪問

還有另一種選擇,因為這可能作為服務運行

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

狀態可以是 STOPPED、RUNNING...

您可以嘗試搜索進程並提取該行

例如:

ps|grep tomcat

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM