Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PID herausfinden um Prozess zu beenden

Mitglied: 64903

64903 (Level 1)

06.05.2008, aktualisiert 07.05.2008, 17909 Aufrufe, 13 Kommentare

Hey Leute,

ich habe folgendes Problem:
Auf einen Windows 2000 Server wird eine cm.exe aus ca. 10 verschiedenen Verzeichnissen gestartet.
Wir haben eine kleine Watchdog-Applikation laufen, die unter anderen diese 10 Prozesse überwacht.
Der Watchdog ist auch in der Lage den Prozess neu zu starten

"%CAPPATH%\bin\cm.exe server stop"
"%CAPPATH%\bin\cm.exe server start"

Leider kommt es vor, dass dieser Neustart nicht gelingt bzw. der Prozess nicht mehr stoppt.
Deshalb möchten ich einen "Kill-Befehl" hinterherschicken.

Bisher habe ich leider noch keine Möglichkeit gefunden, ausser über die PID.

1) Wie finde ich die PID zu "%CAPPATH%\bin\cm.exe" heraus?
oder
2) Wie kann ich den Prozess "%CAPPATH%\bin\cm.exe" killen?

Danke für jegliche Hilfe.
Gruss
Oliver
Mitglied: bastla
06.05.2008 um 10:59 Uhr
Hallo Olli1234 und willkommen im Forum!

Mit dem folgende VBScript kannst Du einen Prozess auf Basis seines Pfades "killen":
01.
'TerminateProcessByPath.vbs
02.

03.
If WScript.Arguments.Count < 1 Then
04.
    WScript.Echo "Pfad des zu beendenden Prozesses als Parameter übergeben!"
05.
    WScript.Quit
06.
End If
07.

08.
strProc = LCase(WScript.Arguments(0))
09.
strComputer = "."
10.

11.
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
12.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process",,48)
13.

14.
For Each objItem in colItems
15.
    If Not IsNull(objItem.ExecutablePath) Then
16.
        If LCase(objItem.ExecutablePath) = strProc Then
17.
            WScript.Echo "Beende: " & objItem.ProcessId & " " & objItem.Name & " (" & objItem.ExecutablePath & ")"
18.
            objItem.Terminate
19.
        End If
20.
    End If
21.
Next
Beim Aufruf ist der gewünschte Pfad zu übergeben - wenn das Script zB unter "C:\Scripts\TerminateProcessByPath.vbs" gespeichert wurde, dann:
01.
cscript //nologo C:\Scripts\TerminateProcessByPath.vbs "%CAPPATH%\bin\cm.exe"
Grüße
bastla
Bitte warten ..
Mitglied: 59769
06.05.2008 um 11:00 Uhr
Ich glaub Du kannst den Prozess mit Taskkill über den Schalter /im direkt killen.
Schau doch mal hier nach: http://technet2.microsoft.com/windowsserver/en/library/c1db6dae-41c3-4c ...
Bitte warten ..
Mitglied: bastla
06.05.2008 um 11:15 Uhr
@59769

Einmal unabhängig davon, dass Du mit dem Schalter "/im" keinen Pfad angeben kannst: "taskkill" gibt's erst ab XP / Server 2003 ...

Grüße
bastla
Bitte warten ..
Mitglied: 64903
06.05.2008 um 17:17 Uhr
Hi bastla und danke für die schnelle Antwort!!

Leider hat sich nun herausgestellt, dass der Pfad alleine nicht reicht.
Denn es gibt mindestens eine cm.exe, die mehrmals gestartet wird..

Folgender Code spuckt die PID vom richtigen Prozess aus:
1) tasklist /fi "SERVICES eq blahblahblah" /fo list | find "PID:" | d:\temp\unix\cut.exe -C:15

Ergebnis:
2345Leerzeichen
Leerzeile

Mit taskkill könnte ich den Prozess jetzt ja killen, aber wie nur?
2) taskkill /f /fi "PID eq ???"

Wie kann ich die das Ergebnis von 1) an der Stelle '???' aus 2) verwenden?

Gruss Oliver
Bitte warten ..
Mitglied: bastla
06.05.2008 um 17:42 Uhr
Hallo Olli1234!

Etwa so:
01.
@echo off & setlocal
02.
set PID=
03.
for /f %%i in ('tasklist /fi "SERVICES eq blahblahblah" /fo list ^| find "PID:" ^| d:\temp\unix\cut.exe -C:15') do if not defined PID set PID=%%i
04.
echo Beende Prozess: %PID%
05.
taskkill /f /PID %PID%
[Edit] Sollten mehrere Prozesse gefunden werden, wird bei obiger Version nur der erste gestoppt - falls das ev nicht so gemeint war, folgende Alternative (in der Sparvariante mit nur einer Zeile und ohne "cut.exe", aber immer noch zur Verwendung in einem Batch, daher %%i):
01.
for /f "tokens=2 delims=," %%i in ('tasklist /fi "SERVICES eq blahblahblah" /fo csv^|more +2') do if "%%~i" neq "" echo Beende Prozess: %%~i & taskkill /f /PID %%~i
[/Edit]

Grüße
bastla

P.S.: Wie bringst Du "tasklist" und "taskkill" auf dem 2000er-Server zum Laufen?
Bitte warten ..
Mitglied: 64903
07.05.2008 um 10:36 Uhr
Hi bastla!

Es wird bisher immer nur ein Prozess gefunden!
Dein Code funktioniert also auch ohne "tokens=2 delims" super!! Danke dafür!!

Der nächste konsequente Schritt ist nun, den Namen des Services als Parameter zu übergeben.
Leider funktionert folgender Aufruf nicht:
processkill "blah - blah - blah"

Quelltext:
set servicename=%1

Ergebnis:
set servicename="blah - blah - blah"

for /F %i in ('tasklist /fi "SERVICES eq "blah - blah - blah"" /fo list | find "PID:" | d:\unix\cut.exe -C:15') do if not defined PID set PID=%i

Die Anführungszeichen vor unter hinter dem Parameter sollten eigentlich nicht mehr enthalten sein :-l
Aber ohne die Anführungszeichen (beim Aufruf) geht es natürlich auch nicht.

P.S.: Wie bringst Du "tasklist" und "taskkill" auf dem 2000er-Server zum Laufen?

Ich hatte erst auf deinem Windows 2000er-Server getestet. Da ich dann nicht weiter kam, habe ich auf dem Windows 2003er-Server weitergemacht, damit ich tasklist und taskkill benutzen kann.

Gruss
Oliver
Bitte warten ..
Mitglied: 59769
07.05.2008 um 10:45 Uhr
@bastla
das mit Server2000 habe ich übersehen..dafür wäre wohl pskill geeignet.
Bitte warten ..
Mitglied: bastla
07.05.2008 um 10:51 Uhr
Hallo Olli1234!

Dein Code funktioniert also auch ohne "tokens=2 delims"
Diese Schreibweise hat nichts damit zu tun, wieviele Prozesse gefunden werden, sondern zerlegt nur die "tasklist"-Ausgabe sauberer als mit der "cut.exe" ...

Die Anführungszeichen vor unter hinter dem Parameter sollten eigentlich nicht mehr enthalten sein.
Die Schreibweise dafür ist:
01.
set "servicename=%~1"
Die "for"-Zeile sähe dann so aus:
01.
for /F %i in ('tasklist /fi "SERVICES eq "%servicename%"" /fo list | find "PID:" | d:\unix\cut.exe -C:15') do if not defined PID set PID=%i
Grüße
bastla
Bitte warten ..
Mitglied: 64903
07.05.2008 um 11:11 Uhr
Hallo bastla!
Danke für deine Mühe.... die Batch funktioniert jetzt so, wie sie soll

01.
@echo off & setlocal
02.
set "servicename=%~1"
03.
set PID=
04.
for /f %%i in ('tasklist /fi "SERVICES eq %servicename%" /fo list ^| find "PID:" ^| d:\temp\unix\cut.exe -C:15') do if not defined PID set PID=%%i
05.
taskkill /f /PID %PID%
Ich habe es jetzt so mit dem cut.exe gelassen!
Thread kann damit geschlossen werden.
Bitte warten ..
Mitglied: bastla
07.05.2008 um 11:52 Uhr
Hallo Olli1234!

Freut mich, dass es klappt.

Thread kann damit geschlossen werden.
Das könntest Du auch so dokumentieren.

Vielleicht magst Du auch noch abschließend Deinen endgültigen Batch zwischen <code></code>-Tags setzen ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
07.05.2008 um 13:03 Uhr
Moin Olli1234,

Thread kann damit geschlossen werden.

Nein, das sehe ich anders....
Für alle MitleserInnern ist unklar, wieso Du denn auf dem W2000er Server nun doch die "TaskList" und "TaskKill"-Utililies am Laufen hast.

Das wurde mehrfach hier im Beitrag angefragt - nur Du kannst die Antwort geben.

Grüße
Biber
Bitte warten ..
Mitglied: 64903
07.05.2008 um 13:54 Uhr
Nein, das sehe ich anders....
Für alle MitleserInnern ist unklar, wieso Du denn auf dem W2000er Server nun doch
die "TaskList" und "TaskKill"-Utililies am Laufen hast.
Das wurde mehrfach hier im Beitrag angefragt - nur Du kannst die Antwort geben.

^^ Das hatte ich eigentlich schon beantwortet! Als ich angefangen hatte auf dem Testsystem unter Windows 2000er Server, kam ich nicht mehr weiter. Dann habe ich auf dem Livesystem mit Windows 2003er Server weitergetestet, da ich auf dem auch Tasklist und Taskkill benutzen konnte.

Ich hatte erst auf deinem Windows 2000er-Server getestet. Da ich dann nicht weiter kam,
habe ich auf dem Windows 2003er-Server weitergemacht, damit ich tasklist und taskkill
benutzen kann.

Mit anderen Worten: "Auf dem W2000er Server konnte ich selbstverständlich NICHT die "TaskList-" und "TaskKill"-Utilities benutzen"

Gruss
Oliver
Bitte warten ..
Mitglied: Biber
07.05.2008 um 15:10 Uhr
Moin Oliver,

sorry, Du hast recht - ich hatte es überlesen.
Dann schließe ich jetzt den Beitrag wie gewünscht.

Danke für die Rückmeldung.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBS Taskkill PID
gelöst Frage von DanteGabrielVB for Applications8 Kommentare

Hallo zusammen, ich habe ein kleines Problem mit einem VBS Script. Aktuell möchte ich ein Script zum neustarten einiger ...

Debian
Linux PID auslesen
Frage von HardExitDebian

Hallo zusammen, ich habe das Problem dass ich mit unten stehenden Code bei 10 versuchen ca 2 mal die ...

Linux
Startscript PID statt PPID
gelöst Frage von schneerunzelLinux5 Kommentare

Hallo zusammen, ich habe auf Grundlage des Beispiels ein Startscript für Java Applikation geschrieben nun habe ich folgendes Problem ...

Batch & Shell
Bestimmten wscript.exe Prozess beenden
gelöst Frage von KnuefiBatch & Shell6 Kommentare

Hallo und guten Tag zusammen, ich benötige mal wieder eure Hilfe. Ich möchte ein bestimmten wscript.exe Prozess beenden. Ein ...

Neue Wissensbeiträge
Windows Server

Zähe Update-Installation auf Windows Server 2016

Information von kgborn vor 18 StundenWindows Server4 Kommentare

Mir sind in der Vergangenheit immer wieder Beschwerden von Admins unter die Augen gekommen, die sich über die doch ...

Humor (lol)
Turnschuhe per Firmware lahmlegen
Information von Henere vor 21 StundenHumor (lol)5 Kommentare

Und was kommt demnächst ? Bekomme ich kein Klopapier mehr, weil der Spender einem DDOS unterliegt ? :-) Ich ...

Sicherheit

Sicherheitsrisiko in WinRAR und Co. durch Schwachstelle in UNACEV2.DLL

Information von kgborn vor 1 TagSicherheit

In der seit 2005 nicht mehr aktualisierten Bibliothek UNACEV2.DLL gibt es eine Path-Traversal-Schwachstelle. Diese ermöglicht es, bei ACE-Archiven Dateien ...

Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 1 TagInternet4 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Heiß diskutierte Inhalte
Hardware
Frage an Kenner von 5,25 Zoll Laufwerken
Frage von DerWoWussteHardware53 Kommentare

Moin Kollegen. Hier wird gerade im Archiv gewühlt und 5,25 Zoll Disketten ("2S/HD", 96TPI) sollen eingelesen werden. Ich habe ...

Windows Tools
Dateiname Automatisch auf PDF Klartext oder als Barcode abdrucken
Frage von spongebob24Windows Tools26 Kommentare

Hallo Zusammen, habe eine tolle Anforderung bekommen. Ich sollte auf mehrere PDF Dateien Automatisch einen Stempel anbringen lassen. Toll ...

Datenbanken
PHP Fatal error: Uncaught Error: Call to undefined function oci connect
gelöst Frage von PlanitecXDatenbanken22 Kommentare

Hallo Zusammen, ich sitze seit Tagen am Problem das ich keine PHP Anwendung mit Anbindung zu Oracle zum laufen ...

Internet
SDSL oder ADSL - Preis-Leistungs-Verhältnis
Frage von ZeppelinInternet20 Kommentare

Wehrte Community, der Unterschied dieser beiden Techniken ist recht einfach erklärt. Das S, steht für Synchron (Gleich) und das ...