Respostas:
Você pode fazer isso usando o Process Explorer .
Basta passar o mouse sobre um processo para ver os argumentos da linha de comando usados para iniciá-lo:
Como alternativa, você pode abrir as propriedades do processo e inspecionar a linha de comando ali:
Você também pode fazer isso sem o Process Explorer, usando o serviço WMI do Windows. Execute o seguinte no prompt de comando:
WMIC path win32_process get Caption,Processid,Commandline
Se você deseja despejar a saída em um arquivo (facilita a leitura), use a opção / OUTPUT:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
Pode-se também conseguir isso usando o Gerenciador de tarefas .
Abra o gerenciador de tarefas (por CTRL-SHIFT-ESC, CTRL-ALT-DELETE ou qualquer outro método).
Para o Windows 7 (e provavelmente o Windows XP):
Para o Windows 8:
Uma coluna de linhas de comando será adicionada às colunas exibidas no momento.
PowerShell para o resgate.
Encontrar:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
E mate como bônus:
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 }
Você pode executá-lo diretamente do PowerShell ou de um ps1, se tiver a configuração do sistema. Eu detalho a configuração irrestrita do script em i kill zombies with powershell , bem como outros truques do powershell ...
As respostas anteriores são ótimas caso o processo já esteja em execução e não seja encerrado em breve. No entanto, se você precisar (como eu fiz) fazer isso, talvez com processos iniciando várias vezes e / ou finalizando rapidamente, ou talvez registrando ocorrências em um período mais longo, existe um caminho para isso usando o Process Monitor .
Basicamente, ele registra vários eventos no sistema; nesse caso, podemos apenas filtrar o evento "Process Start" e o nome do processo que queremos monitorar, conforme mostrado abaixo:
Em seguida, mantenha o monitor de processo em execução e faça o que fizer para que o processo que você deseja registrar seja executado. Você pode ver na coluna "Detalhe" ou na "Linha de comando" (depende de como você as configura) os argumentos da linha de comando. Por exemplo:
É claro que dessa maneira você pode extrair muito mais informações relacionadas, como qual é o diretório de trabalho, quais variáveis de ambiente foram passadas no processo, etc ... Também é fácil exportar os resultados para um arquivo.
Ao usar o CygWin , se eu iniciar um processo Python , este é um exemplo de linha de comando:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
Mas o Process Explorer vê apenas o exe principal:
(observe o "caminho: [Erro ao abrir a mensagem do processo]" (consulte EDIT-1)). Mesmos resultados para tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
Então, o único truque que eu conheço até agora, é encontrá-lo via shell do CygWin Bash pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
É útil saber disso, desde que o CygWin coabite sem problemas no Windows e você possa usá-lo para executar muitos programas POSIX e Python.
EDIT: No Windows, você não parece precisar de privilégios de administrador para a lista de tarefas. No CygWin, você precisará deles para poder visualizar o processo de um administrador (o que me parece mais lógico: a linha de comando completa pode ter alguns parâmetros como senhas ), portanto, precisamos executar o CygWin Bash no modo Administrador elevado .
EDIT-1: Esse problema não ocorrerá se você executar o Process Explorer como administrador. Obrigado por apontar, @Pacerier.
[Error opening process message]