web-dev-qa-db-fra.com

Déterminez si Tomcat s'exécute sous Windows à l'aide de l'invite de commande.

Tout simplement, comment déterminer si Tomcat s'exécute sous Windows, en utilisant l'invite de commande? 

J'écris un script batch qui doit le faire. Ceci est la Bash version:

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

Où $ 2 est le port.

Je cherche quelque chose de semblable à cela. L'utilisation de Cygwin est hors de question, ce script doit nécessairement pouvoir être exécuté sur des machines uniquement équipées de Tomcat.

16
MirroredFate

Vous pouvez utiliser tasklist pour vérifier si l'exécutable de Tomcat est en cours d'exécution. Par exemple:

@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

Il est également possible de vérifier un serveur de suppression à l'aide des options /S, /U et /P. Voir tasklist /? pour plus de détails.

5
wimh

Testez le statut du service Tomcat avec la commande SC . MJB a déjà suggéré de tester l'état du service avec SC, encore un autre script de traitement par lots (sans boucle FOR) pour tester l'état:

@ECHO OFF
SC query Tomcat5 | FIND "STATE" | FIND "RUNNING" > NUL
IF ERRORLEVEL 1 (
    ECHO Stopped
) ELSE (
    ECHO Running
)

Si vous n'êtes pas sûr si le nom du service est Tomcat5, vous pouvez répertorier tous les noms de services avec

SC query state= all | FIND "SERVICE_NAME"
6
Christian Ammer

Utiliser 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"

remarque:/i doit rendre l'opération de recherche insensible à la casse.

3
RealHowTo

Voici la version Windows de la solution UNIX/LINUX basée sur netstat posée dans la question:

@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

utilisez netstat -a dans l'invite de commande.

Vous trouverez le port 8080 répertorié ici.

1
R11G

Eh bien, je ne suis pas très bon avec les scripts, mais vous pourriez peut-être vous en servir comme point de départ: 

netstat -a -n | findstr: 8005

Obtenir si quelqu'un écoute sur le port 8005. Il s'agit du port par défaut de Tomcat pour l'administration à distance, c'est-à-dire le démarrage ou l'arrêt.
Vous pouvez également utiliser le port que le serveur http écoute.
J'espère que cela t'aides

1
Cratylus

Si vous exécutez Tomcat pour Windows et non comme un service et que vous ne voulez pas exploiter JMX, la meilleure solution est

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

où:

  • Tomcat - le titre de la fenêtre du terminal de Tomcat par défaut
  • Java.exe - le nom du processus du Tomcat. NOT Tomcat.exe .
1
Anton Lem

Je vérifie en appelant un script vb en ligne de commande

cscript //nologo checkurl.vbs | findstr "200"
IF errorlevel 1 GOTO :not_running 

Enregistrez le script ci-dessous sous le nom checkurl.vbs et remplacez l'ip par ip machines

' 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

J'avais des problèmes avec la commande sc query, car même si Tomcat plantait, le service était toujours affiché comme étant en cours d'exécution alors que le port n'était pas accessible

0
orak

Encore une autre option, puisque cela fonctionne probablement en tant que service

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

statut peut être des choses comme STOPPED, RUNNING ...

0
MJB