Respuestas:
Puede hacerlo utilizando Process Explorer .
Simplemente desplace el mouse sobre un proceso para ver los argumentos de la línea de comando utilizados para iniciarlo:
Alternativamente, puede abrir las propiedades del proceso e inspeccionar la línea de comando allí mismo:
También puede hacerlo sin Process Explorer, utilizando el servicio WMI de Windows. Ejecute lo siguiente desde el símbolo del sistema:
WMIC path win32_process get Caption,Processid,Commandline
Si desea volcar la salida a un archivo (hace que sea un poco más fácil de leer), use el modificador / OUTPUT:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
También se puede lograr eso mediante el Administrador de tareas .
Administrador de tareas abierto (por CTRL-SHIFT-ESC, CTRL-ALT-DELETE o cualquier otro método).
Para Windows 7 (y probablemente Windows XP):
Para Windows 8:
Se agregará una columna de líneas de comando a las columnas que se muestran actualmente.
PowerShell al rescate.
Encontrar:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
Y matar como bonificación:
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 }
Puede ejecutarlo desde powershell directamente o desde una ps1 si tiene la configuración de su sistema. Detallo la configuración de script sin restricciones en i kill zombies con powershell , así como otros trucos de powershell ...
Las respuestas anteriores son excelentes en caso de que el proceso ya se esté ejecutando y no termine pronto. Sin embargo, si necesita (como lo hice) hacer esto, tal vez con los procesos que se inician varias veces y / o finalizan rápidamente, o tal vez se registran las ocurrencias en un período de tiempo más largo, hay una manera de hacerlo usando Process Monitor .
Básicamente, registra varios eventos en el sistema, en este caso podemos simplemente filtrar el evento "Inicio del proceso" y el nombre del proceso que queremos monitorear, como se muestra a continuación:
Luego, simplemente mantenga el monitor de proceso en ejecución y haga lo que haga para que se ejecute el proceso que desea iniciar sesión. Puede ver en la columna "Detalle" o en la columna "Línea de comando" (depende de cómo los configure) los argumentos de la línea de comando. Por ejemplo:
Por supuesto, de esta manera puede extraer mucha más información relacionada, como qué es el directorio de trabajo, qué variables de entorno se han pasado en el proceso, etc. También es fácil exportar los resultados a un archivo.
Cuando uso CygWin , si inicio un proceso de Python , este es un ejemplo de línea de comando:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
Pero Process Explorer solo ve el exe principal:
(tenga en cuenta la "ruta: [Error al abrir el mensaje del proceso]" (ver EDIT-1)). Los mismos resultados para tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
Entonces, el único truco que conozco hasta ahora es encontrarlo a través del shell CygWin Bash pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
Es útil saber esto, siempre que CygWin cohabite sin problemas en Windows, y puede usarlo para ejecutar muchos programas POSIX y Python.
EDITAR: en Windows no parece necesitar privilegios de administrador para la lista de tareas. En CygWin los necesitará para poder ver el proceso de un administrador (lo que me parece más lógico: la línea de comandos completa podría tener algunos parámetros como contraseñas dentro), por lo que debemos ejecutar CygWin Bash en modo Administrador elevado .
EDITAR-1: Este problema no sucederá si ejecuta Process Explorer como administrador. Gracias por señalar, @Pacerier.
[Error opening process message]