Odpowiedzi:
Możesz to zrobić za pomocą Eksploratora procesów .
Najedź kursorem myszy na proces, aby zobaczyć argumenty wiersza poleceń użyte do jego uruchomienia:
Alternatywnie możesz otworzyć właściwości procesu i sprawdzić w tym miejscu wiersz poleceń:
Możesz to zrobić również bez Process Explorera, korzystając z usługi WMI systemu Windows. Uruchom następujące polecenie w wierszu polecenia:
WMIC path win32_process get Caption,Processid,Commandline
Jeśli chcesz zrzucić dane wyjściowe do pliku (ułatwia to czytanie), użyj przełącznika / OUTPUT:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
Można to również osiągnąć za pomocą Menedżera zadań .
Otwórz menedżera zadań (za pomocą CTRL-SHIFT-ESC, CTRL-ALT-DELETE lub dowolną inną metodą).
W systemie Windows 7 (i prawdopodobnie Windows XP):
W systemie Windows 8:
Kolumna Wiersze poleceń zostanie dodana do aktualnie wyświetlanych kolumn.
PowerShell na ratunek.
Odnaleźć:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
I zabij jako 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 }
Możesz uruchomić go bezpośrednio z PowerShell lub z PS1, jeśli masz już konfigurację systemu. Szczegółowo opisuję nieograniczoną konfigurację skryptu dotyczącą zabijania zombie za pomocą PowerShell, a także innych sztuczek PowerShell ...
Poprzednie odpowiedzi są świetne w przypadku, gdy proces już trwa i wkrótce się nie zakończy. Jednakże, jeśli potrzebujesz (tak jak ja), aby to zrobić, być może procesory uruchamiają się wiele razy i / lub szybko kończą, lub być może rejestrują zdarzenia w dłuższym okresie czasu, istnieje na to sposób za pomocą Monitora procesów .
Zasadniczo rejestruje różne zdarzenia w systemie, w tym przypadku możemy po prostu odfiltrować zdarzenie „Rozpoczęcie procesu” i nazwę procesu, który chcemy monitorować, jak pokazano poniżej:
Następnie po prostu utrzymuj monitor procesu działający i rób wszystko, co chcesz, aby proces, który chcesz zalogować, był uruchomiony. W kolumnie „Szczegóły” lub w kolumnie „Wiersz poleceń” (w zależności od ich konfiguracji) możesz zobaczyć argumenty wiersza poleceń. Na przykład:
Oczywiście w ten sposób możesz wyodrębnić znacznie więcej powiązanych informacji, takich jak katalog roboczy, jakie zmienne środowiskowe zostały przekazane w procesie itp. Również łatwo jest wyeksportować wyniki do pliku.
Jeśli korzystam z CygWin , jeśli uruchomię proces w języku Python , jest to przykład wiersza poleceń:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
Ale Process Explorer widzi tylko główny plik exe:
(zwróć uwagę na „ścieżkę: [Błąd otwierania komunikatu procesowego]” (patrz EDYCJA-1)). Te same wyniki dla tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
Tak więc jedyną sztuczką, jaką znam do tej pory, jest znalezienie jej za pomocą powłoki CygWin Bash pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
Warto o tym wiedzieć, o ile CygWin nie ma problemów w systemie Windows i można go używać do uruchamiania wielu programów POSIX i Python.
EDYCJA: W systemie Windows wydaje się, że nie potrzebujesz uprawnień administratora do listy zadań. W CygWin będziesz potrzebował ich, aby móc zobaczyć proces administratora (co wydaje mi się bardziej logiczne: pełny wiersz poleceń może zawierać pewne parametry, takie jak hasła ), więc musimy uruchomić CygWin Bash w podwyższonym trybie administratora .
EDYCJA 1: Ten problem nie wystąpi, jeśli uruchomisz Process Explorer jako administrator. Dziękuję za wskazanie, @Pacerier.
[Error opening process message]