Ответы:
Вы можете сделать это с помощью Process Explorer .
Просто наведите курсор мыши на процесс, чтобы увидеть аргументы командной строки, использованные для его запуска:
Кроме того, вы можете открыть свойства процесса и проверить командную строку прямо здесь:
Вы также можете сделать это без Process Explorer, используя службу WMI Windows. Запустите следующее из командной строки:
WMIC path win32_process get Caption,Processid,Commandline
Если вы хотите вывести вывод в файл (это немного облегчает чтение), используйте параметр / OUTPUT:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
Этого также можно добиться с помощью диспетчера задач .
Откройте диспетчер задач (с помощью CTRL-SHIFT-ESC, CTRL-ALT-DELETE или любым другим способом).
Для Windows 7 (и, вероятно, Windows XP):
Для Windows 8:
Столбец командной строки будет добавлен к отображаемым в данный момент столбцам.
PowerShell на помощь.
Найти:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
И убить в качестве бонуса:
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 }
Вы можете запустить его из powershell напрямую или из ps1, если у вас есть настройки вашей системы. Я подробно описываю неограниченную настройку сценариев: я убиваю зомби с помощью PowerShell, а также другие трюки с PowerShell ...
Предыдущие ответы хороши, если процесс уже запущен и не скоро завершится. Однако если вам нужно (как я сделал) сделать это, возможно, с процессами, запускаемыми несколько раз и / или быстро завершающимися, или, возможно, регистрировать события в течение более длительного периода времени, есть способ сделать это с помощью Process Monitor .
По сути, он регистрирует различные события в системе, в этом случае мы можем просто отфильтровать событие «Запуск процесса» и имя процесса, который мы хотим отслеживать, как показано ниже:
Затем просто оставьте монитор процесса включенным и делайте все, что вы делаете, чтобы запустить процесс, который вы хотите зарегистрировать В столбце «Сведения» или в столбце «Командная строка» (в зависимости от того, как вы их настраиваете) вы можете видеть аргументы командной строки. Например:
Конечно, таким образом вы можете извлечь гораздо больше связанной информации, такой как, что является рабочим каталогом, какие переменные среды были переданы процессу и т. Д. ... Также легко экспортировать результаты в файл.
При использовании CygWin , если я запускаю процесс Python , это пример командной строки:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
Но Process Explorer видит только основной exe:
(обратите внимание на «путь: [Ошибка при открытии сообщения процесса]» (см. РЕДАКТИРОВАТЬ-1)). Такие же результаты для tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
Итак, единственный трюк, который я знаю до сих пор, это найти его через оболочку CygWin Bash pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
Это полезно знать, поскольку CygWin без проблем работает в Windows, и вы можете использовать его для запуска многих программ POSIX и Python.
РЕДАКТИРОВАТЬ: В Windows вам не нужны привилегии администратора для списка задач. В CygWin они вам понадобятся, чтобы иметь возможность просматривать процесс администратора (что мне кажется более логичным: полная командная строка может иметь некоторые параметры, такие как пароли внутри), поэтому мы должны запустить CygWin Bash в режиме администратора с повышенными правами .
РЕДАКТИРОВАТЬ-1: эта проблема не произойдет, если вы запустите Process Explorer от имени администратора. Спасибо, что указали, @Pacerier.
[Error opening process message]