Processüberwachung
Hallo,
ich möchte gern Prozesse überwachen. Sobald die sich selbst beenden (Absturzt), muss eine message angezeigt werden! Leider handelt es sich bei dem Prozess um einen Unterprozess eines Tasks. Wenn man sich die Abbildung anschaut, müssen die javaw.exe processe überwacht werden.
Ich hoffe ihr könnt mir da weiterhelfen.
Gruss
chappy
ich möchte gern Prozesse überwachen. Sobald die sich selbst beenden (Absturzt), muss eine message angezeigt werden! Leider handelt es sich bei dem Prozess um einen Unterprozess eines Tasks. Wenn man sich die Abbildung anschaut, müssen die javaw.exe processe überwacht werden.
Ich hoffe ihr könnt mir da weiterhelfen.
Gruss
chappy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 150244
Url: https://administrator.de/contentid/150244
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
23 Kommentare
Neuester Kommentar
Hallo chappy!
Soferne ich Dich richtig verstehe, willst Du doch herausfinden, ob alle 4 Prozesse noch laufen - insofern würde ja ein Abzählen genügen:
Grüße
bastla
Soferne ich Dich richtig verstehe, willst Du doch herausfinden, ob alle 4 Prozesse noch laufen - insofern würde ja ein Abzählen genügen:
@echo off & setlocal
for /f %%i in ('tasklist|find /c "jawaw.exe"') do set /a Anz=%%i
If %Anz% neq 4 echo Mindestens ein Prozess laeuft nicht!
bastla
Hallo chappy!
Zumindest hinsichtlich
Deine zweite Frage ist mir nicht wirklich klar ("
Grüße
bastla
Zumindest hinsichtlich
gezählt werden 4 Durchläufe der for-Schleife
hätte ich einen Hinweis: Gezählt werden ja alle Zeilen der "tasklist
"-Ausgabe - wenn Du diese auf die tatsächlich Interessanten (mit "javaw.exe") beschränken willst, dann:for /f %%i in ('tasklist /fi "username eq Domaine\benutzer"^|findstr "javaw\.exe"') do set /a sum +=1
tasklist
" liefert keinen Pfad) ...Grüße
bastla
Hallo chappy!
Was Du dargestellt hast, nämlich die Kontrolle ob überhaupt ein "javaw"-Task für den angegebenen Benutzer läuft (und nicht die Kontrolle, ob es denn 2 wären), ließe sich einfacher realisieren:
Soferne das Trennzeichen zwischen Benutzer- und Dienstnamen in der Textdatei ein TAB oder ein Leerzeichen ist, kannst Du "
Falls durch Leerzeichen getrennt wird, sorgt die Schreibweise "
Grüße
bastla
Was Du dargestellt hast, nämlich die Kontrolle ob überhaupt ein "javaw"-Task für den angegebenen Benutzer läuft (und nicht die Kontrolle, ob es denn 2 wären), ließe sich einfacher realisieren:
@echo off & setlocal
set "Dienste=D:\RETTube\jobs\CheckProcess\Dienste.txt"
for /f "usebackq tokens=1* delims=%Delim%" %%d in ("%Dienste%") do (
tasklist /fi "username eq "%%d"^|findstr "javaw\.exe">nul && (
echo Alles ok!
) || (
echo Der Prozess ist nicht vorhanden!
date /t >> D:\Programme\test.txt
time /t >> D:\Programme\test.txt
net stop "%%e" >> D:\Programme\test.txt
net start "%%e" >> D:\Programme\test.txt
)
)
delims=%Delim%
" weglassen, und wenn nicht, dann müsste dieses Trennzeichen der Variablen auch zugewiesen worden sein, also etwaset "Delim=;"
tokens=1*
" dafür, dass nur das erste Leerzeichen (zwischen Benutzername und Dienstname) als Trennzeichen gilt und ev im Dienstnamen enthaltene weitere Leerzeichen letzteren nicht "auseinanderreißen" ...Grüße
bastla
Hallo chappy!
Mit ">" wird eine "Ausgabeumleitung" vorgenommen - so kann die Ausgabe eines "
Für die UND-Verknüpfung genügt einfach
- hat aber eigentlich Biber hier schon mal gezeigt ...
Grüße
bastla
Mit ">" wird eine "Ausgabeumleitung" vorgenommen - so kann die Ausgabe eines "
echo
" oder anderen Befehles in eine Datei, oder, wie in diesem Fall, zum "nul"-Device = ins Nichts vorgenommen werden - es wird damit die "normale" Ausgabe unterdrückt. Um auch Fehlermeldungen umzuleiten, wäre zusätzlich "2>&1
" zu verwenden ...if Bedingung 1 if Bedingung 2 Aktion
Grüße
bastla
Hallo chappy!
Ein "%%f" kann es nicht geben, wenn mit "
Grüße
bastla
Ein "%%f" kann es nicht geben, wenn mit "
tokens=1*
" festgelegt wird, dass alles nach dem ersten Trennzeichen (unabhängig von ev weiteren vorhanden Trennzeichen) als Einheit zu interpretieren ist - daher sollte es mit "tokens=1-3
" oder, falls der angesprochene Verzeichnisname auch ";" enthielte, mit "tokens=1,2*
", funktionieren ...Grüße
bastla
Hallo chappy!
Du hattest zwei Befehle ("
Bei einer "gewöhnlichen" "
Alternativ hättest Du natürlich auch nur "%%i" (ohne "%%f\" vorweg) verwenden können (aber dann hättest Du ja mit "%%~nxi" keine Bekanntschaft gemacht ) ...
Grüße
bastla
Du hattest zwei Befehle ("
for
" und "if exist
") vermischt - das konnte so nicht klappen. Mit "if exist
" lässt sich zwar die Existenz (auch unter Verwendung von Wildcards) von Dateien und Ordnern prüfen, wenn Du aber die einzelnen Namen / Pfade benötigst, ist die Schleife erforderlich ...Bei einer "gewöhnlichen" "
for
"-Schleife erhältst Du in der Schleifenvariablen im Prinzip ein "Objekt" (bei "for /f
" ist es nur ein String), wodurch "%%i" dann den gesamten Pfad der jeweiligen Datei enthält. Wenn Du nun nur den Dateinamen benötigst (der Ordner ist ja schon in "%%f" enthalten), pickst Du Dir eben die passenden Bestandteile "name" und "extension") heraus (siehe dazu ziemlich am Ende von "for /?
").Alternativ hättest Du natürlich auch nur "%%i" (ohne "%%f\" vorweg) verwenden können (aber dann hättest Du ja mit "%%~nxi" keine Bekanntschaft gemacht ) ...
Grüße
bastla