fugu
Goto Top

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:
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

Content-ID: 84697

Url: https://administrator.de/contentid/84697

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

AndreasHoster
AndreasHoster 04.04.2008 um 13:08:10 Uhr
Goto Top
Ich bin ja der Meinung, Batch ist dafür nicht das richtige Mittel.Ich würde ein VBS Skript machen:
'* 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
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]
bastla
bastla 04.04.2008, aktualisiert am 18.10.2012 um 18:35:35 Uhr
Goto Top
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