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, 17692 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
C und C++

Status eines oder aller Prozesse herausfinden

gelöst Frage von tomaschkuC und C++14 Kommentare

Hallo alle zusammen! Ich arbeite mit Visual Studio 2017 in C unter Windows 10. Ich habe mir das Grundgerüst ...

Windows 7

Wie kann ich das beenden eines Prozesses Protokollieren?

Frage von ScrollerWindows 77 Kommentare

Hallo, sporadisch beenden sich an einem unserer PCs Prozesse (Win 7 Prof). Im eventlog steht nichts dazu. Gut wäre ...

Windows Server

Software Prozesse über GPO beenden

gelöst Frage von dakoerryWindows Server7 Kommentare

Guten Tag kann mir einer helfen, möchte gerne alle PC´s in einer Server 2012 R2 Domain einen bestimmten Prozess ...

Batch & Shell

Remote Prozesse Beenden

gelöst Frage von HanutaBatch & Shell6 Kommentare

Hallo Zusammen, gibt es die Möglichkeit von Powershell mit Stop-Process z. B. den Firefox auch Remote zu beenden? Möchte ...

Neue Wissensbeiträge
Windows 10
Windows 10 Oktober 2018 Update: Es ist wieder da
Tipp von Bowsette vor 6 StundenWindows 10

Ein neuer Versuch von Microsoft das Windows 10 Oktober 2018 Update, auch bekannt als 1809, an den Mann zu ...

Windows Server

Windows Server 2016: Achtung - ab heute gibt es wieder Express Updates

Information von kgborn vor 17 StundenWindows Server1 Kommentar

Kurze Info für Administratoren, die Windows Server 2016 per WSUS/SCCM mit Updates betanken. Ab heute gibt es für Windows ...

Windows Netzwerk
Windows Admin Center - Sagt was ihr braucht!
Tipp von Juanito vor 2 TagenWindows Netzwerk18 Kommentare

Hallo zusammen, der ein- oder andere hat sicherlich schon vom Windows Admin Center gehört. - Microsoft's neue Adminkonsole welche ...

Verschlüsselung & Zertifikate

Bitlocker-Verschlüsselung und -Monitoring ohne MBAM

Tipp von DerWoWusste vor 2 TagenVerschlüsselung & Zertifikate

Der Folgende Tipp beschreibt, wie man ohne MBAM die Verschlüsselung erzwingt und monitort. MBAM ist ein Enterprise-Benefit und somit ...

Heiß diskutierte Inhalte
Entwicklung
Meine Nachbarn sehen meinen Internet Trafic
gelöst Frage von beatnguEntwicklung51 Kommentare

Hallo Also ich wohne in einem Mehrparteien Haus mit 24 wohnungen. Meine nachbaren im letzten stock fummeln immer an ...

Microsoft Office
Lizenzierung
Frage von opc123Microsoft Office29 Kommentare

Hallo, eventuell ein oft bekanntes Thema. Office 365 ist mir zu teuer, da wir als Bildungsträger andere Konditionen beim ...

Windows 10
Windows 10 mit CRITICAL PROCESS DIED
Frage von liquidbaseWindows 1028 Kommentare

Das aktuelle Problem was ich habe steht bereits im Threadtitel. Etwas mehr zum Hintergrund soll nun folgen. Problemkind ist ...

Voice over IP
Andere Rufnummer bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom anzeigen
Frage von vafk18Voice over IP19 Kommentare

Ich möchte bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom meine Handynummer hinterlegen, damit ich Rückrufe jederzeit empfangen kann. Derzeit ...