web-dev-qa-db-ja.com

コマンドプロンプトを使用して、TomcatがWindowsで実行されているかどうかを確認する

簡単に言うと、コマンドプロンプトを使用して、TomcatがWindowsで実行されているかどうかをどのように判断するのでしょうか。

これを実行する必要があるバッチスクリプトを書いています。これは Bash バージョンです。

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

$ 2はポートです。

私はそれに似たものを探しています。 Cygwin の使用は問題外です。このスクリプトは、Tomcatのみがインストールされているマシンで実行できる必要があります。

16
MirroredFate

タスクリストを使用して、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"
6
Christian Ammer

[〜#〜] 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
RealHowTo

これは、質問で尋ねられた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
grunci

コマンドプロンプトでnetstat -aを使用します。

そこに8080ポートがリストされています。

1
R11G

まあ、私はスクリプトがあまり得意ではありませんが、おそらくこれを出発点として使用できます。

netstat -a -n | findstr:8005

誰かがポート8005でリッスンしているかどうかを取得します。これは、リモート管理、つまり起動またはシャットダウンのためのTomcatのデフォルトポートです。
または、httpサーバーが待機するポートを使用することもできます。
お役に立てれば

1
Cratylus

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のプロセスの名前。 Tomcat.exeではありません
1
Anton Lem

コマンドラインから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
orak

これはおそらくサービスとして実行されているため、さらに別のオプション

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

ステータスはSTOPPED、RUNNINGなどです。

0
MJB