Prüfen ob ein Prozess mehrfach läuft
Moinz Leute,
auf einem unserer Server läuft ein Win Apache und eine Web-Suchanwendung für eine bestimmte Datenbank.
Jetzt besteht das Problem, dass dieser Suchprozess ständig mehrfach gestartet wird und dadurch den Server völlig auslastet.
Ich möchte gerne bspw. in 10-Min-Abständen prüfen, ob dieser Prozess/Dienst mehrfach läuft (in diesem Fall eine perl.exe) und ggf. vorhandene Mehrfachprozesse canceln.
Erster Ansatz:
Aber irgendwie komme ich nicht so recht weiter.
Wie benende ich nun alle Prozesse bis auf einen?
'ne Möglichkeit wäre einfach alle Prozesse zu killen und einen nur zu starten. Aber ich kriege die Schleife nicht erstellt.
Thx, Fugu
auf einem unserer Server läuft ein Win Apache und eine Web-Suchanwendung für eine bestimmte Datenbank.
Jetzt besteht das Problem, dass dieser Suchprozess ständig mehrfach gestartet wird und dadurch den Server völlig auslastet.
Ich möchte gerne bspw. in 10-Min-Abständen prüfen, ob dieser Prozess/Dienst mehrfach läuft (in diesem Fall eine perl.exe) und ggf. vorhandene Mehrfachprozesse canceln.
Erster Ansatz:
tasklist |find /i "perl.exe">nul
Aber irgendwie komme ich nicht so recht weiter.
Wie benende ich nun alle Prozesse bis auf einen?
'ne Möglichkeit wäre einfach alle Prozesse zu killen und einen nur zu starten. Aber ich kriege die Schleife nicht erstellt.
Thx, Fugu
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 84697
Url: https://administrator.de/contentid/84697
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
2 Kommentare
Neuester Kommentar
Ich bin ja der Meinung, Batch ist dafür nicht das richtige Mittel.Ich würde ein VBS Skript machen:
Die Version würde jetzt allerdings alle Perl Prozesse löschen, da müsste man halt den ersten, oder letzten noch ausnehmen, wenn man vorhersagen kann, welcher der richtige ist der weiterlaufen darf.
Daher ist die Variante hinterher den Perl Prozess neu zu starten vermutlich sinnvoller.
[Edit Biber] Auf formatiert. [/Edit]
'* Verbindung mit WMI (Windows Management Instrumentation) aufnehmen
Set wmi = GetObject("winmgmts:{(Security)}")
'* Alle Notepad Prozesse raussuchen
Set oProc = wmi.ExecQuery("select * from win32_process where name='perl.exe'")
i=0
For each proc in oProc
i=i+1
Next
if i>1 then
For each proc in oProc
proc.terminate
Next
end if
Daher ist die Variante hinterher den Perl Prozess neu zu starten vermutlich sinnvoller.
[Edit Biber] Auf formatiert. [/Edit]
Hallo fugu!
Etwas in der Art hatten wir hier, allerdings ebenfalls mit VBS - ob's übrigens funktioniert, mochte der Threadersteller seit 06.07.2007 noch nicht mitteilen ...
Grüße
bastla
Etwas in der Art hatten wir hier, allerdings ebenfalls mit VBS - ob's übrigens funktioniert, mochte der Threadersteller seit 06.07.2007 noch nicht mitteilen ...
Grüße
bastla