Antworten:
Sie können dies mit dem Process Explorer tun .
Bewegen Sie den Mauszeiger einfach über einen Prozess, um die zum Starten verwendeten Befehlszeilenargumente anzuzeigen:
Alternativ können Sie die Eigenschaften des Prozesses öffnen und die Befehlszeile genau dort überprüfen:
Sie können dies auch ohne Process Explorer mit dem WMI-Dienst von Windows tun. Führen Sie an der Eingabeaufforderung Folgendes aus:
WMIC path win32_process get Caption,Processid,Commandline
Wenn Sie die Ausgabe in eine Datei sichern möchten (um das Lesen zu erleichtern), verwenden Sie die Option / OUTPUT:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
Dies kann auch mit dem Task-Manager erreicht werden .
Öffnen Sie den Task-Manager (mit STRG-UMSCHALT-ESC, STRG-ALT-ENTF oder einer anderen Methode).
Für Windows 7 (und wahrscheinlich Windows XP):
Für Windows 8:
Eine Spalte mit Befehlszeilen von wird zu den aktuell angezeigten Spalten hinzugefügt.
PowerShell zur Rettung.
Finden:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
Und töte als Bonus:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }
Sie können es von Powershell direkt oder von einem PS1 ausführen, wenn Sie Ihr System-Setup haben. Ich beschreibe die uneingeschränkte Skript-Einrichtung, wie ich Zombies mit Powershell und anderen Powershell-Tricks töte ...
Vorherige Antworten sind für den Fall hilfreich, dass der Prozess bereits ausgeführt wird und nicht bald abgebrochen wird. Wenn Sie dies jedoch tun müssen (wie ich), beispielsweise, wenn Prozesse mehrmals gestartet und / oder schnell beendet werden oder wenn Ereignisse über einen längeren Zeitraum protokolliert werden, gibt es eine Möglichkeit, dies mithilfe des Prozessmonitors zu tun .
Grundsätzlich werden verschiedene Ereignisse im System protokolliert. In diesem Fall können Sie einfach das Ereignis "Prozessstart" und den Namen des zu überwachenden Prozesses filtern, wie unten gezeigt:
Lassen Sie dann einfach den Prozessmonitor laufen und tun Sie alles, um den Prozess, den Sie protokollieren möchten, zum Laufen zu bringen. Sie können entweder in der Spalte "Detail" oder in der Spalte "Befehlszeile" (abhängig davon, wie Sie diese konfigurieren) die Befehlszeilenargumente sehen. Zum Beispiel:
Natürlich können Sie auf diese Weise viel mehr verwandte Informationen wie das Arbeitsverzeichnis, die übergebenen Umgebungsvariablen usw. extrahieren. Außerdem ist es einfach, die Ergebnisse in eine Datei zu exportieren.
Wenn ich mit CygWin einen Python- Prozess starte , ist dies ein Beispiel für eine Befehlszeile:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
Im Process Explorer wird jedoch nur die Haupt-Exe angezeigt:
(Beachten Sie den "Pfad: [Fehler beim Öffnen der Prozessmeldung]" (siehe EDIT-1)). Gleiche Ergebnisse für tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
Der einzige Trick, den ich bisher kenne, ist, ihn über die CygWin Bash-Shell zu finden pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
Es ist nützlich, dies zu wissen, solange CygWin unter Windows problemlos funktioniert und Sie damit viele POSIX- und Python-Programme ausführen können.
BEARBEITEN: In Windows scheinen Sie keine Administratorrechte für die Jobliste zu benötigen. In CygWin müssen Sie sie ein Administrator Prozess in der Lage sein zu sehen (was mir mehr logisch erscheint: die vollständige Befehlszeile haben könnten einige Parameter wie Passwörter innen), so müssen wir die laufen CygWin Bash in erhöhten Administrator - Modus .
EDIT-1: Dieses Problem tritt nicht auf, wenn Sie Process Explorer als Administrator ausführen. Vielen Dank für den Hinweis, @Pacerier.
[Error opening process message]