Risposte:
Puoi farlo usando Process Explorer .
Passa il mouse sopra un processo per visualizzare gli argomenti della riga di comando utilizzati per avviarlo:
In alternativa, puoi aprire le proprietà del processo e ispezionare la riga di comando proprio lì:
Puoi farlo anche senza Process Explorer, usando il servizio WMI di Windows. Eseguire quanto segue dal prompt dei comandi:
WMIC path win32_process get Caption,Processid,Commandline
Se si desidera scaricare l'output su un file (facilita la lettura), utilizzare l'opzione / OUTPUT:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
Si può anche ottenere ciò utilizzando Task Manager .
Apri task manager (da CTRL-SHIFT-ESC, CTRL-ALT-CANC o qualsiasi altro metodo).
Per Windows 7 (e probabilmente Windows XP):
Per Windows 8:
Una colonna di righe di comando verrà aggiunta alle colonne attualmente visualizzate.
PowerShell in soccorso.
Trova:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
E uccidi come 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 }
Puoi eseguirlo direttamente da PowerShell o da una PS1 se hai la configurazione del tuo sistema. Descrivo in dettaglio la configurazione degli script senza restrizioni su I kill zombies con PowerShell e altri trucchi PowerShell ...
Le risposte precedenti sono ottime nel caso in cui il processo sia già in esecuzione e non terminerà presto. Tuttavia, se è necessario (come ho fatto io) farlo forse con l'avvio dei processi più volte e / o la chiusura rapida, o forse la registrazione delle ricorrenze in un periodo di tempo più lungo, è possibile utilizzare Process Monitor .
Fondamentalmente registra vari eventi nel sistema, in questo caso possiamo semplicemente filtrare l'evento "Avvio processo" e il nome del processo che vogliamo monitorare, come mostrato di seguito:
Quindi mantieni il monitor di processo in esecuzione e fai tutto ciò che fai per ottenere il processo che desideri eseguire. Puoi vedere nella colonna "Dettaglio" o nella colonna "Riga di comando" (dipende da come configurarli) gli argomenti della riga di comando. Per esempio:
Ovviamente in questo modo è possibile estrarre molte più informazioni correlate come la directory di lavoro, quali variabili d'ambiente sono state passate sul processo, ecc ... Inoltre è facile esportare i risultati in un file.
Quando utilizzo CygWin , se avvio un processo Python , questo è un esempio di riga di comando:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
Ma Process Explorer vede solo l'exe principale:
(notare il "percorso: [Errore durante l'apertura del messaggio di processo]" (vedere EDIT-1)). Stessi risultati per tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
Quindi, l'unico trucco che conosco fino ad ora, è trovarlo tramite la shell CygWin Bash pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
È utile saperlo, purché CygWin conviva senza problemi in Windows e sia possibile utilizzarlo per eseguire molti programmi POSIX e Python.
EDIT: in Windows non sembra che tu abbia bisogno dei privilegi di amministratore per l'elenco delle attività. In CygWin avrai bisogno che siano in grado di visualizzare il processo di un amministratore (ciò che mi sembra più logico: l'intera riga di comando potrebbe avere alcuni parametri come le password all'interno), quindi dobbiamo eseguire CygWin Bash in modalità amministratore elevata .
EDIT-1: questo problema non si verifica se si esegue Process Explorer come amministratore. Grazie per il puntamento, @Pacerier.
[Error opening process message]